Skip to content

Add RSA-OAEP encrypt/decrypt across all crypto backends#2667

Merged
jviotti merged 3 commits into
mainfrom
rsa-oaep
Jul 23, 2026
Merged

Add RSA-OAEP encrypt/decrypt across all crypto backends#2667
jviotti merged 3 commits into
mainfrom
rsa-oaep

Conversation

@jviotti

@jviotti jviotti commented Jul 23, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

jviotti added 2 commits July 23, 2026 15:29
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@augmentcode

augmentcode Bot commented Jul 23, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds RSA-OAEP encryption/decryption support to Sourcemeta Core’s crypto module across all supported backends.

Changes:

  • Introduced the public RSA-OAEP API (`rsa_oaep_encrypt` / `rsa_oaep_decrypt`) and `RSAOAEPHash` selector in crypto_rsa_oaep.h, and re-exported it via crypto.h.
  • Implemented RSA-OAEP for each crypto backend: OpenSSL (EVP), Apple Security (SecKey), Windows CNG (BCrypt), and the reference (“other”) backend.
  • Extended the reference SHA-1 implementation with a raw digest helper (sha1_digest) needed for OAEP hashing/MGF.
  • Updated build wiring (CMake) to compile and link the new backend sources and headers.
  • Added dedicated RSA-OAEP unit tests (round trips, size/randomization, rejection cases).
  • Integrated Wycheproof RSA-OAEP vectors (SHA-1/SHA-256; 2048/3072/4096-bit keys) into the existing Wycheproof test harness.

Technical Notes: The reference backend follows RFC 8017 OAEP using shared bignum/math primitives; platform backends delegate to native OAEP implementations.

🤖 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. 1 suggestion posted.

Fix All in Augment

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

auto wrapped{
sourcemeta::core::rsa_oaep_encrypt(
public_key.value(), sourcemeta::core::RSAOAEPHash::SHA256, "hello")
.value()};

@augmentcode augmentcode Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

rsa_oaep_encrypt(...).value() can throw std::bad_optional_access and will be reported as an unexpected exception (with poorer diagnostics) if encryption ever returns std::nullopt (e.g., backend/RNG failure). Consider asserting has_value() before dereferencing optionals in these tests so failures surface through the test framework with a clear message.

Severity: low

Other Locations
  • test/crypto/crypto_rsa_oaep_test.cc:77
  • test/crypto/crypto_rsa_oaep_test.cc:79
  • test/crypto/crypto_rsa_oaep_test.cc:87
  • test/crypto/crypto_rsa_oaep_test.cc:89
  • test/crypto/crypto_rsa_oaep_test.cc:91
  • test/crypto/crypto_rsa_oaep_test.cc:100
  • test/crypto/crypto_rsa_oaep_test.cc:103
  • test/crypto/crypto_rsa_oaep_test.cc:120
  • test/crypto/crypto_rsa_oaep_test.cc:127
  • test/crypto/crypto_rsa_oaep_test.cc:132

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@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.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/core/crypto/crypto_rsa_oaep_openssl.cc Outdated
Comment thread test/crypto/wycheproof_test.cc
Comment thread src/core/crypto/crypto_rsa_oaep_other.cc Outdated
Comment thread src/core/crypto/crypto_rsa_oaep_apple.cc Outdated

@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: 8aaa245 Previous: b4011c4 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.016908952386428 ns/iter 2.52226800665769 ns/iter 1.20
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.7390010127101374 ns/iter 2.288731666676357 ns/iter 1.20
Regex_Period_Asterisk 2.612137650824425 ns/iter 2.4780279646076435 ns/iter 1.05
Regex_Group_Period_Asterisk_Group 2.5892447562962273 ns/iter 2.131090499660333 ns/iter 1.21
Regex_Period_Plus 3.0308260183143148 ns/iter 2.6654569035008655 ns/iter 1.14
Regex_Period 3.0594902620027313 ns/iter 2.634831958976986 ns/iter 1.16
Regex_Caret_Period_Plus_Dollar 2.8005588005647923 ns/iter 2.746692888025442 ns/iter 1.02
Regex_Caret_Group_Period_Plus_Group_Dollar 3.0177579368483354 ns/iter 2.33997898620369 ns/iter 1.29
Regex_Caret_Period_Asterisk_Dollar 2.700930599328234 ns/iter 2.137265969785069 ns/iter 1.26
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.057039146011489 ns/iter 2.237932751283028 ns/iter 0.92
Regex_Caret_X_Hyphen 6.4774331883878125 ns/iter 7.2853719764093015 ns/iter 0.89
Regex_Period_Md_Dollar 17.389246267203745 ns/iter 20.109027540478035 ns/iter 0.86
Regex_Caret_Slash_Period_Asterisk 5.009390450326174 ns/iter 6.21224396561413 ns/iter 0.81
Regex_Caret_Period_Range_Dollar 2.1971518093005202 ns/iter 2.4723254583219934 ns/iter 0.89
Regex_Nested_Backtrack 30.17584405663757 ns/iter 31.46491203389044 ns/iter 0.96
JSON_Array_Of_Objects_Unique 429.38494255535073 ns/iter 442.5416733946536 ns/iter 0.97
JSON_Parse_1 7874.914427653812 ns/iter 8742.915920268308 ns/iter 0.90
JSON_Parse_Real 7860.006622371283 ns/iter 8253.610118366852 ns/iter 0.95
JSON_Parse_Decimal 10799.665514849834 ns/iter 8141.153772717605 ns/iter 1.33
JSON_Parse_Schema_ISO_Language 5250935.014925996 ns/iter 4262215.075144045 ns/iter 1.23
JSON_Parse_Integer 6273.338339631782 ns/iter 5289.867611668273 ns/iter 1.19
JSON_Parse_String_NonSSO_Plain 8705.913579615051 ns/iter 7492.442602776568 ns/iter 1.16
JSON_Parse_String_SSO_Plain 3757.167539865587 ns/iter 2948.4502442183843 ns/iter 1.27
JSON_Parse_String_Escape_Heavy 22195.089112722962 ns/iter 22512.860733089296 ns/iter 0.99
JSON_Parse_Object_Short_Keys 9408.279100497004 ns/iter 8480.19723605538 ns/iter 1.11
JSON_Parse_Object_Scalar_Properties 5225.426996593372 ns/iter 5509.260859958287 ns/iter 0.95
JSON_Parse_Object_Array_Properties 9426.471754359989 ns/iter 9290.47829811175 ns/iter 1.01
JSON_Parse_Object_Object_Properties 8581.384216417378 ns/iter 7967.036741871366 ns/iter 1.08
JSON_Parse_Nested_Containers 81489.58615960456 ns/iter 68172.44250775433 ns/iter 1.20
JSON_From_String_Copy 37.90441175974717 ns/iter 27.553035960064793 ns/iter 1.38
JSON_From_String_Temporary 25.62926187509303 ns/iter 20.155403969796904 ns/iter 1.27
JSON_Number_To_Double 46.08006399420462 ns/iter 36.69947216748676 ns/iter 1.26
JSON_Object_At_Last_Key/8 5.516608362850407 ns/iter 4.3480170605381625 ns/iter 1.27
JSON_Object_At_Last_Key/32 17.589522067467694 ns/iter 13.327789863028633 ns/iter 1.32
JSON_Object_At_Last_Key/128 65.47416402082844 ns/iter 58.55580509696746 ns/iter 1.12
JSON_Object_At_Last_Key/512 236.48576461587234 ns/iter 209.30046413193736 ns/iter 1.13
JSON_Fast_Hash_Helm_Chart_Lock 70.77652358382198 ns/iter 69.65729242128093 ns/iter 1.02
JSON_Equality_Helm_Chart_Lock 197.88960436373182 ns/iter 165.40890126623802 ns/iter 1.20
JSON_Divisible_By_Decimal 230.09078241537762 ns/iter 188.93772656713523 ns/iter 1.22
JSON_String_Equal/10 10.084509700419583 ns/iter 7.736947522401706 ns/iter 1.30
JSON_String_Equal/100 9.218455671711729 ns/iter 7.472983102599139 ns/iter 1.23
JSON_String_Equal_Small_By_Perfect_Hash/10 0.4551348351424036 ns/iter 0.3652078621037956 ns/iter 1.25
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.802262314900665 ns/iter 3.607866908970728 ns/iter 1.33
JSON_String_Fast_Hash/10 2.8019396758526773 ns/iter 2.492053860817121 ns/iter 1.12
JSON_String_Fast_Hash/100 2.6334269698877875 ns/iter 2.154853197238106 ns/iter 1.22
JSON_String_Key_Hash/10 2.2073956067520895 ns/iter 1.9590112543338483 ns/iter 1.13
JSON_String_Key_Hash/100 3.185812448408235 ns/iter 2.2775996607623457 ns/iter 1.40
JSON_Object_Defines_Miss_Same_Length 3.437413802903844 ns/iter 2.8775818530515376 ns/iter 1.19
JSON_Object_Defines_Miss_Too_Small 3.102475021481907 ns/iter 2.865039154922471 ns/iter 1.08
JSON_Object_Defines_Miss_Too_Large 3.222257723259046 ns/iter 2.728258640887632 ns/iter 1.18
Pointer_Object_Traverse 27.567315481443813 ns/iter 24.86727492514091 ns/iter 1.11
Pointer_Object_Try_Traverse 31.503019174573783 ns/iter 26.704857653327778 ns/iter 1.18
Pointer_Push_Back_Pointer_To_Weak_Pointer 209.77533815361238 ns/iter 191.25793004148088 ns/iter 1.10
Pointer_Walker_Schema_ISO_Language 3790000.206029974 ns/iter 3182922.8868779424 ns/iter 1.19
Pointer_Maybe_Tracked_Deeply_Nested/0 1526867.5680750085 ns/iter 1511452.7837836144 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/1 1252601.933216005 ns/iter 1294640.5708418856 ns/iter 0.97
Pointer_Position_Tracker_Get_Deeply_Nested 428.45738351256034 ns/iter 405.5789329221883 ns/iter 1.06
JSONPath_Descendant_Filter_Nested 1793.8476277413781 ns/iter 1448.6604723714934 ns/iter 1.24
URITemplateRouter_Create 34962.44164876789 ns/iter 29942.353997021724 ns/iter 1.17
URITemplateRouter_Match 217.65290631942054 ns/iter 228.41996929042 ns/iter 0.95
URITemplateRouter_Match_BasePath 293.57729625521296 ns/iter 269.40198011082015 ns/iter 1.09
URITemplateRouterView_Restore 16187.321672049424 ns/iter 14569.057397397204 ns/iter 1.11
URITemplateRouterView_Match 200.06824952322762 ns/iter 185.86982158269515 ns/iter 1.08
URITemplateRouterView_Match_BasePath 236.07310231765152 ns/iter 202.8837393501145 ns/iter 1.16
URITemplateRouterView_Arguments 782.5697402566334 ns/iter 667.1185554150561 ns/iter 1.17
JSONL_Parse_Large 17423288.60975648 ns/iter 19164485.500000507 ns/iter 0.91
JSONL_Parse_Large_GZIP 16934743.74999937 ns/iter 17239067.22727458 ns/iter 0.98
JSONLD_Catalog_Annotation_List_Populate 1115575.5703421528 ns/iter 1278630.5509869286 ns/iter 0.87
JSONLD_Catalog_Materialize 5298109.570370529 ns/iter 6181876.762711408 ns/iter 0.86
HTML_Build_Table_100000 39465571.42857695 ns/iter 47259308.33333981 ns/iter 0.84
HTML_Render_Table_100000 1642047.4408061034 ns/iter 2354803.0405405564 ns/iter 0.70
GZIP_Compress_ISO_Language_Set_3_Locations 31036935.590908468 ns/iter 28746502.10000027 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Locations 3908226.7964072158 ns/iter 3319898.809523974 ns/iter 1.18
GZIP_Compress_ISO_Language_Set_3_Schema 1785482.0945945608 ns/iter 1524720.0195650966 ns/iter 1.17
GZIP_Decompress_ISO_Language_Set_3_Schema 302302.2854678901 ns/iter 270117.782678442 ns/iter 1.12
JOSE_VerifySignature_RS256 25311.99093924993 ns/iter 22232.47106875482 ns/iter 1.14
JOSE_VerifySignature_ES512 1258220.776493166 ns/iter 1118160.9223455784 ns/iter 1.13

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: 8aaa245 Previous: b4011c4 Ratio
JOSE_VerifySignature_RS256 22315.837379959627 ns/iter 24599.77595435895 ns/iter 0.91
JOSE_VerifySignature_ES512 575631.1652960433 ns/iter 641742.2708907053 ns/iter 0.90
GZIP_Compress_ISO_Language_Set_3_Locations 36489219.052627 ns/iter 39356253.166665226 ns/iter 0.93
GZIP_Decompress_ISO_Language_Set_3_Locations 4387030.777070466 ns/iter 4048853.2543348405 ns/iter 1.08
GZIP_Compress_ISO_Language_Set_3_Schema 2026988.129682912 ns/iter 2296199.8655736367 ns/iter 0.88
GZIP_Decompress_ISO_Language_Set_3_Schema 381200.0594328954 ns/iter 331879.6217212884 ns/iter 1.15
HTML_Build_Table_100000 65042846.90908497 ns/iter 72939552.00000255 ns/iter 0.89
HTML_Render_Table_100000 1991201.0431036686 ns/iter 1936178.5518208498 ns/iter 1.03
JSONLD_Catalog_Annotation_List_Populate 1318047.5159474956 ns/iter 1311972.8787315313 ns/iter 1.00
JSONLD_Catalog_Materialize 6876951.558823232 ns/iter 6854596.048543782 ns/iter 1.00
JSONL_Parse_Large 13887416.607843203 ns/iter 12738872.618181383 ns/iter 1.09
JSONL_Parse_Large_GZIP 15173019.826086741 ns/iter 14159242.08163233 ns/iter 1.07
URITemplateRouter_Create 31172.725245118298 ns/iter 30280.0936120475 ns/iter 1.03
URITemplateRouter_Match 167.08470137543682 ns/iter 158.2805658935654 ns/iter 1.06
URITemplateRouter_Match_BasePath 188.31051262895878 ns/iter 190.61266583323936 ns/iter 0.99
URITemplateRouterView_Restore 8686.008302339194 ns/iter 9899.822337292444 ns/iter 0.88
URITemplateRouterView_Match 125.25213974317894 ns/iter 124.51223163777792 ns/iter 1.01
URITemplateRouterView_Match_BasePath 144.44918782280746 ns/iter 142.71508014232967 ns/iter 1.01
URITemplateRouterView_Arguments 471.00141470416924 ns/iter 583.9662480000243 ns/iter 0.81
JSONPath_Descendant_Filter_Nested 1785.4097111357157 ns/iter 1779.3634630474107 ns/iter 1.00
Pointer_Object_Traverse 32.72356572546981 ns/iter 32.281134911830016 ns/iter 1.01
Pointer_Object_Try_Traverse 25.793650977270232 ns/iter 26.047363783605203 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 154.20202749332324 ns/iter 154.78431757269766 ns/iter 1.00
Pointer_Walker_Schema_ISO_Language 3014248.0995853934 ns/iter 2859610.0717301667 ns/iter 1.05
Pointer_Maybe_Tracked_Deeply_Nested/0 1905426.8149169884 ns/iter 1887384.799457744 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/1 1732640.6403942108 ns/iter 1630710.27441854 ns/iter 1.06
Pointer_Position_Tracker_Get_Deeply_Nested 413.888683279844 ns/iter 427.7083475119603 ns/iter 0.97
JSON_Array_Of_Objects_Unique 424.30149209031373 ns/iter 405.60517406076485 ns/iter 1.05
JSON_Parse_1 9987.834895551201 ns/iter 9761.01122058793 ns/iter 1.02
JSON_Parse_Real 7995.940745917621 ns/iter 7783.001643449387 ns/iter 1.03
JSON_Parse_Decimal 13328.421609037878 ns/iter 11127.536393463153 ns/iter 1.20
JSON_Parse_Schema_ISO_Language 6784369.262136043 ns/iter 6769337.33653912 ns/iter 1.00
JSON_Parse_Integer 5693.894055900632 ns/iter 5818.68629377653 ns/iter 0.98
JSON_Parse_String_NonSSO_Plain 11908.384427476683 ns/iter 11859.837137759436 ns/iter 1.00
JSON_Parse_String_SSO_Plain 5048.859670725839 ns/iter 5154.042746561934 ns/iter 0.98
JSON_Parse_String_Escape_Heavy 26602.838602204643 ns/iter 24231.57924307171 ns/iter 1.10
JSON_Parse_Object_Short_Keys 14000.085126083884 ns/iter 13994.400257813879 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 6983.861967622091 ns/iter 7157.708047501597 ns/iter 0.98
JSON_Parse_Object_Array_Properties 12142.586494613166 ns/iter 12641.775832823181 ns/iter 0.96
JSON_Parse_Object_Object_Properties 12312.528321609654 ns/iter 11843.752279660248 ns/iter 1.04
JSON_Parse_Nested_Containers 98705.4639728766 ns/iter 100148.4568396856 ns/iter 0.99
JSON_From_String_Copy 18.093702985383516 ns/iter 19.35138663313034 ns/iter 0.94
JSON_From_String_Temporary 15.357299855723953 ns/iter 16.008549698404142 ns/iter 0.96
JSON_Number_To_Double 20.915397274575906 ns/iter 19.810359810949922 ns/iter 1.06
JSON_Object_At_Last_Key/8 3.86604376580962 ns/iter 4.206074506296717 ns/iter 0.92
JSON_Object_At_Last_Key/32 11.875098927404991 ns/iter 13.362298316601601 ns/iter 0.89
JSON_Object_At_Last_Key/128 48.64249880455565 ns/iter 47.8563415409592 ns/iter 1.02
JSON_Object_At_Last_Key/512 360.94496945173177 ns/iter 283.77418250468025 ns/iter 1.27
JSON_Fast_Hash_Helm_Chart_Lock 61.40867027643925 ns/iter 71.71484497921358 ns/iter 0.86
JSON_Equality_Helm_Chart_Lock 156.6008105736674 ns/iter 180.57882222868497 ns/iter 0.87
JSON_Divisible_By_Decimal 262.5588977681408 ns/iter 242.67006181494506 ns/iter 1.08
JSON_String_Equal/10 5.3767067268838105 ns/iter 5.361077724735614 ns/iter 1.00
JSON_String_Equal/100 5.99983974912677 ns/iter 6.066544525984603 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6238099384648244 ns/iter 0.7134489669558106 ns/iter 0.87
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.193598392237718 ns/iter 21.935378549276024 ns/iter 1.15
JSON_String_Fast_Hash/10 2.327267762815703 ns/iter 2.463460836870072 ns/iter 0.94
JSON_String_Fast_Hash/100 2.2973617975544407 ns/iter 2.4624541658611 ns/iter 0.93
JSON_String_Key_Hash/10 1.2464263281900925 ns/iter 1.0844456837807355 ns/iter 1.15
JSON_String_Key_Hash/100 12.443182928379283 ns/iter 14.754023288951416 ns/iter 0.84
JSON_Object_Defines_Miss_Same_Length 3.1150178596232507 ns/iter 3.1681822579290952 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Small 3.1129507060683936 ns/iter 3.5193636862427353 ns/iter 0.88
JSON_Object_Defines_Miss_Too_Large 3.1126778744318266 ns/iter 3.166965080513623 ns/iter 0.98
Regex_Lower_S_Or_Upper_S_Asterisk 0.9350786188767575 ns/iter 1.0564022832898592 ns/iter 0.89
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.6232673598753369 ns/iter 0.7031654716939247 ns/iter 0.89
Regex_Period_Asterisk 0.9343200159929616 ns/iter 1.0553480794781052 ns/iter 0.89
Regex_Group_Period_Asterisk_Group 0.6233176450045934 ns/iter 0.703656530729846 ns/iter 0.89
Regex_Period_Plus 0.949753083200154 ns/iter 1.0555699365789528 ns/iter 0.90
Regex_Period 0.622778831948128 ns/iter 0.7033358676043653 ns/iter 0.89
Regex_Caret_Period_Plus_Dollar 0.9347623681317223 ns/iter 1.0552714010790645 ns/iter 0.89
Regex_Caret_Group_Period_Plus_Group_Dollar 0.6232450367804305 ns/iter 0.7035895558951701 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 0.9393062063290101 ns/iter 1.059762186847678 ns/iter 0.89
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.6222555181451744 ns/iter 0.7036138002267973 ns/iter 0.88
Regex_Caret_X_Hyphen 4.3632989714920365 ns/iter 4.2198297208400195 ns/iter 1.03
Regex_Period_Md_Dollar 30.17078896328536 ns/iter 33.100504410384744 ns/iter 0.91
Regex_Caret_Slash_Period_Asterisk 4.671619966587926 ns/iter 4.5811580947832 ns/iter 1.02
Regex_Caret_Period_Range_Dollar 1.2461234195937552 ns/iter 1.407798082709452 ns/iter 0.89
Regex_Nested_Backtrack 38.66469103494675 ns/iter 40.4201465638768 ns/iter 0.96

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: 8aaa245 Previous: b4011c4 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.8155720404869453 ns/iter 1.981112226386981 ns/iter 1.42
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.4621225112704623 ns/iter 1.515817162678799 ns/iter 1.62
Regex_Period_Asterisk 2.462515105067814 ns/iter 1.506234759138581 ns/iter 1.63
Regex_Group_Period_Asterisk_Group 2.8143749035005965 ns/iter 2.017825505638183 ns/iter 1.39
Regex_Period_Plus 4.2247228042520515 ns/iter 2.2222403399598525 ns/iter 1.90
Regex_Period 3.8763118688091835 ns/iter 2.1563819315875654 ns/iter 1.80
Regex_Caret_Period_Plus_Dollar 3.8741016019048877 ns/iter 2.1434015727051747 ns/iter 1.81
Regex_Caret_Group_Period_Plus_Group_Dollar 4.288837414919644 ns/iter 2.4353643506248472 ns/iter 1.76
Regex_Caret_Period_Asterisk_Dollar 3.1887432088131336 ns/iter 1.937449196013318 ns/iter 1.65
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.839786766306218 ns/iter 1.5303187228154023 ns/iter 1.86
Regex_Caret_X_Hyphen 5.656524223782767 ns/iter 4.04680742352313 ns/iter 1.40
Regex_Period_Md_Dollar 27.36559202219706 ns/iter 19.22551009939851 ns/iter 1.42
Regex_Caret_Slash_Period_Asterisk 5.977170662746749 ns/iter 4.060041674754601 ns/iter 1.47
Regex_Caret_Period_Range_Dollar 2.814554018202002 ns/iter 2.7834129214981638 ns/iter 1.01
Regex_Nested_Backtrack 38.62553541855024 ns/iter 30.456731556372215 ns/iter 1.27
JSON_Array_Of_Objects_Unique 421.66349784328156 ns/iter 340.00250474769746 ns/iter 1.24
JSON_Parse_1 4822.2793302964765 ns/iter 4065.1464040204996 ns/iter 1.19
JSON_Parse_Real 5319.980153552107 ns/iter 4299.875338351801 ns/iter 1.24
JSON_Parse_Decimal 8155.007417688276 ns/iter 6490.02197444523 ns/iter 1.26
JSON_Parse_Schema_ISO_Language 3597569.0416668965 ns/iter 2830506.2341270773 ns/iter 1.27
JSON_Parse_Integer 3964.0829206252442 ns/iter 2900.569034571975 ns/iter 1.37
JSON_Parse_String_NonSSO_Plain 5250.076197850142 ns/iter 3895.3556786181975 ns/iter 1.35
JSON_Parse_String_SSO_Plain 2885.9650566659993 ns/iter 2161.5659249438554 ns/iter 1.34
JSON_Parse_String_Escape_Heavy 15465.237824566862 ns/iter 12747.996053105098 ns/iter 1.21
JSON_Parse_Object_Short_Keys 8211.18248765729 ns/iter 6689.760647682413 ns/iter 1.23
JSON_Parse_Object_Scalar_Properties 4178.807831623615 ns/iter 3453.6806823340658 ns/iter 1.21
JSON_Parse_Object_Array_Properties 5732.925807371059 ns/iter 4730.464002290797 ns/iter 1.21
JSON_Parse_Object_Object_Properties 5699.341733296215 ns/iter 4546.660700143466 ns/iter 1.25
JSON_Parse_Nested_Containers 45684.115414659595 ns/iter 37375.873129986576 ns/iter 1.22
JSON_From_String_Copy 28.006226480318354 ns/iter 16.514596748952084 ns/iter 1.70
JSON_From_String_Temporary 19.76234147045257 ns/iter 13.79606402512736 ns/iter 1.43
JSON_Number_To_Double 22.595857945836684 ns/iter 23.41764205268696 ns/iter 0.96
JSON_Object_At_Last_Key/8 4.099142011402777 ns/iter 4.14584318335169 ns/iter 0.99
JSON_Object_At_Last_Key/32 14.075050060759137 ns/iter 11.622925156391764 ns/iter 1.21
JSON_Object_At_Last_Key/128 56.610409990244115 ns/iter 44.867296053383 ns/iter 1.26
JSON_Object_At_Last_Key/512 369.691423555431 ns/iter 186.06218932579475 ns/iter 1.99
JSON_Fast_Hash_Helm_Chart_Lock 70.08001819771881 ns/iter 50.39985279998973 ns/iter 1.39
JSON_Equality_Helm_Chart_Lock 153.13905956153627 ns/iter 122.22688349717275 ns/iter 1.25
JSON_Divisible_By_Decimal 248.0445271970589 ns/iter 208.23542421461548 ns/iter 1.19
JSON_String_Equal/10 5.276690731908356 ns/iter 4.2331731084070165 ns/iter 1.25
JSON_String_Equal/100 5.980875398017643 ns/iter 5.444847609448799 ns/iter 1.10
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0550778373135181 ns/iter 0.6027549091493059 ns/iter 1.75
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.473240873746247 ns/iter 9.117251836641627 ns/iter 1.37
JSON_String_Fast_Hash/10 2.463414993293777 ns/iter 2.029752719154027 ns/iter 1.21
JSON_String_Fast_Hash/100 2.4649765589170065 ns/iter 2.003330931577986 ns/iter 1.23
JSON_String_Key_Hash/10 2.4610065590336663 ns/iter 1.7176975433623383 ns/iter 1.43
JSON_String_Key_Hash/100 8.259053625284041 ns/iter 6.636939401168994 ns/iter 1.24
JSON_Object_Defines_Miss_Same_Length 4.227948814292046 ns/iter 4.046161021339024 ns/iter 1.04
JSON_Object_Defines_Miss_Too_Small 3.196077602456051 ns/iter 3.7717412370358248 ns/iter 0.85
JSON_Object_Defines_Miss_Too_Large 2.9452005528232985 ns/iter 3.3217324009239473 ns/iter 0.89
Pointer_Object_Traverse 30.811674770831093 ns/iter 21.091968228322727 ns/iter 1.46
Pointer_Object_Try_Traverse 33.16392829155437 ns/iter 23.91481867938582 ns/iter 1.39
Pointer_Push_Back_Pointer_To_Weak_Pointer 175.1994946403333 ns/iter 144.37020825446686 ns/iter 1.21
Pointer_Walker_Schema_ISO_Language 2746076.320312429 ns/iter 2191076.6666665226 ns/iter 1.25
Pointer_Maybe_Tracked_Deeply_Nested/0 1287995.9023941183 ns/iter 979308.9176470711 ns/iter 1.32
Pointer_Maybe_Tracked_Deeply_Nested/1 1615065.8912037155 ns/iter 1422134.0140562393 ns/iter 1.14
Pointer_Position_Tracker_Get_Deeply_Nested 711.7164327282067 ns/iter 606.6580521803942 ns/iter 1.17
JSONPath_Descendant_Filter_Nested 1602.3446398859521 ns/iter 1164.2648896914213 ns/iter 1.38
URITemplateRouter_Create 31503.021243296178 ns/iter 25606.360409080524 ns/iter 1.23
URITemplateRouter_Match 185.12139253453842 ns/iter 148.7581561771474 ns/iter 1.24
URITemplateRouter_Match_BasePath 224.98454494645907 ns/iter 167.984773145861 ns/iter 1.34
URITemplateRouterView_Restore 9097.35014026548 ns/iter 2932.669622842693 ns/iter 3.10
URITemplateRouterView_Match 146.9534106170296 ns/iter 116.8163072746908 ns/iter 1.26
URITemplateRouterView_Match_BasePath 169.68787826287974 ns/iter 131.11329624030083 ns/iter 1.29
URITemplateRouterView_Arguments 453.6740213141034 ns/iter 384.24373257575127 ns/iter 1.18
JSONL_Parse_Large 9817650.736110294 ns/iter 7899601.400000241 ns/iter 1.24
JSONL_Parse_Large_GZIP 11435701.016394053 ns/iter 9176243.216216248 ns/iter 1.25
JSONLD_Catalog_Annotation_List_Populate 1269735.5171789073 ns/iter 982570.4106891794 ns/iter 1.29
JSONLD_Catalog_Materialize 4450143.374999982 ns/iter 3449772.52450964 ns/iter 1.29
HTML_Build_Table_100000 76017759.11112124 ns/iter 54158054.36363867 ns/iter 1.40
HTML_Render_Table_100000 4931323.556338035 ns/iter 4729259.53061219 ns/iter 1.04
GZIP_Compress_ISO_Language_Set_3_Locations 35149957.49999912 ns/iter 23946867.10344778 ns/iter 1.47
GZIP_Decompress_ISO_Language_Set_3_Locations 4328601.65853676 ns/iter 3193873.3027523044 ns/iter 1.36
GZIP_Compress_ISO_Language_Set_3_Schema 2117975.430303087 ns/iter 1613563.497747683 ns/iter 1.31
GZIP_Decompress_ISO_Language_Set_3_Schema 277207.42353410687 ns/iter 307342.09756098274 ns/iter 0.90
JOSE_VerifySignature_RS256 64109.67500914099 ns/iter 42257.02878787877 ns/iter 1.52
JOSE_VerifySignature_ES512 2635822.8646613564 ns/iter 1844449.7704484041 ns/iter 1.43

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

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti
jviotti merged commit 9c5fd3a into main Jul 23, 2026
12 checks passed
@jviotti
jviotti deleted the rsa-oaep branch July 23, 2026 19:12

@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: 8aaa245 Previous: b4011c4 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.120285000000422 ns/iter 5.328868999999941 ns/iter 0.96
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 4.989579999999023 ns/iter 5.016048999998475 ns/iter 0.99
Regex_Period_Asterisk 4.964763000000403 ns/iter 5.0163964285709595 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 4.9736860000007255 ns/iter 5.020938000000115 ns/iter 0.99
Regex_Period_Plus 4.689773447967758 ns/iter 5.014415000000554 ns/iter 0.94
Regex_Period 4.751896585882982 ns/iter 5.3260180000006585 ns/iter 0.89
Regex_Caret_Period_Plus_Dollar 4.621198671028915 ns/iter 5.022405357142442 ns/iter 0.92
Regex_Caret_Group_Period_Plus_Group_Dollar 4.8383390732992995 ns/iter 5.4404169999997976 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 5.196780999999646 ns/iter 5.329999999999018 ns/iter 0.98
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.9574200000006385 ns/iter 5.100073000000975 ns/iter 0.97
Regex_Caret_X_Hyphen 7.8630495184676334 ns/iter 8.484484783552093 ns/iter 0.93
Regex_Period_Md_Dollar 65.05369999999857 ns/iter 45.01442749988415 ns/iter 1.45
Regex_Caret_Slash_Period_Asterisk 7.4599696428561755 ns/iter 7.972033482143307 ns/iter 0.94
Regex_Caret_Period_Range_Dollar 5.341758035714048 ns/iter 5.9588776785700155 ns/iter 0.90
Regex_Nested_Backtrack 79.48341517857013 ns/iter 55.377553571430234 ns/iter 1.44
JSON_Array_Of_Objects_Unique 772.9267857141358 ns/iter 594.1216071428406 ns/iter 1.30
JSON_Parse_1 9328.67130057524 ns/iter 8914.610202633254 ns/iter 1.05
JSON_Parse_Real 17713.263928111322 ns/iter 16199.216517860697 ns/iter 1.09
JSON_Parse_Decimal 11140.12656249841 ns/iter 11771.294642857454 ns/iter 0.95
JSON_Parse_Schema_ISO_Language 7735726.666666981 ns/iter 8129553.333333206 ns/iter 0.95
JSON_Parse_Integer 5938.602678572888 ns/iter 6162.778571428313 ns/iter 0.96
JSON_Parse_String_NonSSO_Plain 7982.002232144023 ns/iter 7754.449107141324 ns/iter 1.03
JSON_Parse_String_SSO_Plain 3715.7780709823164 ns/iter 3665.905340902171 ns/iter 1.01
JSON_Parse_String_Escape_Heavy 21921.62812499987 ns/iter 21579.453124999756 ns/iter 1.02
JSON_Parse_Object_Short_Keys 13285.776849207696 ns/iter 13409.005357142893 ns/iter 0.99
JSON_Parse_Object_Scalar_Properties 6774.882142857612 ns/iter 6907.033482142261 ns/iter 0.98
JSON_Parse_Object_Array_Properties 11581.648214286944 ns/iter 11375.410937500164 ns/iter 1.02
JSON_Parse_Object_Object_Properties 11753.971428569392 ns/iter 11554.807812501622 ns/iter 1.02
JSON_Parse_Nested_Containers 80891.2611607125 ns/iter 81299.57144769751 ns/iter 0.99
JSON_From_String_Copy 62.53381249998873 ns/iter 63.817160714287574 ns/iter 0.98
JSON_From_String_Temporary 81.95845982143116 ns/iter 58.08297321428719 ns/iter 1.41
JSON_Number_To_Double 143.44736607141735 ns/iter 120.79449999999628 ns/iter 1.19
JSON_Object_At_Last_Key/8 8.236594866069932 ns/iter 7.232320535712639 ns/iter 1.14
JSON_Object_At_Last_Key/32 24.727649942365492 ns/iter 23.199639250009614 ns/iter 1.07
JSON_Object_At_Last_Key/128 96.33697337781564 ns/iter 89.11952280717671 ns/iter 1.08
JSON_Object_At_Last_Key/512 421.94582039329225 ns/iter 423.6523750000742 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 132.40123069638219 ns/iter 101.99058026827535 ns/iter 1.30
JSON_Equality_Helm_Chart_Lock 204.0123279458713 ns/iter 232.7673980907379 ns/iter 0.88
JSON_Divisible_By_Decimal 380.4926620756474 ns/iter 295.0907011119939 ns/iter 1.29
JSON_String_Equal/10 10.016169598140904 ns/iter 10.361702008927816 ns/iter 0.97
JSON_String_Equal/100 11.351865625002233 ns/iter 11.625834374999753 ns/iter 0.98
JSON_String_Equal_Small_By_Perfect_Hash/10 2.197011894869567 ns/iter 2.508549999999689 ns/iter 0.88
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 19.764909956405933 ns/iter 14.179648597409306 ns/iter 1.39
JSON_String_Fast_Hash/10 6.37626250000015 ns/iter 6.5933035714290815 ns/iter 0.97
JSON_String_Fast_Hash/100 6.380326785714731 ns/iter 6.826322321428182 ns/iter 0.93
JSON_String_Key_Hash/10 4.9663059999988945 ns/iter 5.726120535714228 ns/iter 0.87
JSON_String_Key_Hash/100 11.215521428567854 ns/iter 11.941471874997944 ns/iter 0.94
JSON_Object_Defines_Miss_Same_Length 3.906219866070616 ns/iter 3.785248386097879 ns/iter 1.03
JSON_Object_Defines_Miss_Too_Small 4.232799374999274 ns/iter 4.117366971638449 ns/iter 1.03
JSON_Object_Defines_Miss_Too_Large 3.891489955357232 ns/iter 3.7842133860996605 ns/iter 1.03
Pointer_Object_Traverse 77.24497321429372 ns/iter 71.02041964285735 ns/iter 1.09
Pointer_Object_Try_Traverse 69.55606249998628 ns/iter 71.8499107142837 ns/iter 0.97
Pointer_Push_Back_Pointer_To_Weak_Pointer 174.7365156014691 ns/iter 184.0168557158086 ns/iter 0.95
Pointer_Walker_Schema_ISO_Language 12029746.666667052 ns/iter 12080864.285715213 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 2413765.060241366 ns/iter 2454704.9999999413 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/1 3665695.8974349555 ns/iter 3797623.5294118035 ns/iter 0.97
Pointer_Position_Tracker_Get_Deeply_Nested 556.1709821429466 ns/iter 510.83641924058094 ns/iter 1.09
JSONPath_Descendant_Filter_Nested 2837.357617251382 ns/iter 2444.049057981236 ns/iter 1.16
URITemplateRouter_Create 38202.46651785755 ns/iter 40699.64018339126 ns/iter 0.94
URITemplateRouter_Match 219.5100624999924 ns/iter 235.93048706132294 ns/iter 0.93
URITemplateRouter_Match_BasePath 246.42446428572381 ns/iter 265.423516313515 ns/iter 0.93
URITemplateRouterView_Restore 24323.07142857683 ns/iter 33782.09585542255 ns/iter 0.72
URITemplateRouterView_Match 171.3271721871307 ns/iter 181.95194481716197 ns/iter 0.94
URITemplateRouterView_Match_BasePath 194.41049057240036 ns/iter 207.1624483409392 ns/iter 0.94
URITemplateRouterView_Arguments 600.449553571382 ns/iter 533.7574107142831 ns/iter 1.12
JSONL_Parse_Large 32999204.761901118 ns/iter 32991061.90476258 ns/iter 1.00
JSONL_Parse_Large_GZIP 33596638.09524569 ns/iter 33621233.33333026 ns/iter 1.00
JSONLD_Catalog_Annotation_List_Populate 2713326.907629913 ns/iter 2842803.4090907346 ns/iter 0.95
JSONLD_Catalog_Materialize 8443940.000001425 ns/iter 11695414.666667905 ns/iter 0.72
HTML_Build_Table_100000 92308385.71426961 ns/iter 95666814.28571297 ns/iter 0.96
HTML_Render_Table_100000 7910284.4444454 ns/iter 8199646.666665406 ns/iter 0.96
GZIP_Compress_ISO_Language_Set_3_Locations 37595057.89474516 ns/iter 35926173.6842104 ns/iter 1.05
GZIP_Decompress_ISO_Language_Set_3_Locations 10415637.49999952 ns/iter 10152621.333333325 ns/iter 1.03
GZIP_Compress_ISO_Language_Set_3_Schema 2295199.665551966 ns/iter 2132744.9275357113 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Schema 585406.3392858068 ns/iter 636569.8214285739 ns/iter 0.92
JOSE_VerifySignature_RS256 23813.81457796619 ns/iter 21335.12564563618 ns/iter 1.12
JOSE_VerifySignature_ES512 1529760.0446427648 ns/iter 1544147.767857242 ns/iter 0.99

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

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