Bug 213678

Summary: [GLIB] WebCryptoAPI tests failing after WPT update in r263598
Product: WebKit Reporter: Diego Pino <dpino>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: bugs-noreply, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Diego Pino 2020-06-26 22:51:52 PDT
The following tests are failing:

  * imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.html [ Failure ]
  * imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html [ Failure ]
  * imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html [ Failure ]

The last two tests were added in the update. These tests have many passes but they fail on certain hashes schemes under certain sizes. Excerpt:

 PASS Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 
 PASS Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage 
 PASS Derived key of type name: AES-KW length: 192  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key 
-PASS Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations 
+FAIL Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code
 PASS Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 
 PASS Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage 
 PASS Derived key of type name: AES-KW length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key 
-PASS Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations 
+FAIL Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed f
or an operation-specific reason Reached unreachable code
 PASS Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 
 PASS Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage 
 PASS Derived key of type name: HMAC hash: SHA-1 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key 
-PASS Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations 
+FAIL Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code
 PASS Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 
 PASS Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage 
 PASS Derived key of type name: HMAC hash: SHA-256 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key 
-PASS Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations 
+FAIL Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed
 for an operation-specific reason Reached unreachable code
 PASS Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 
 PASS Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage 
 PASS Derived key of type name: HMAC hash: SHA-384 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key 
-PASS Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations 
+FAIL Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed
 for an operation-specific reason Reached unreachable code
 PASS Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with bad hash name SHA256 
 PASS Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with missing deriveKey usage 
 PASS Derived key of type name: HMAC hash: SHA-512 length: 256  using long password, empty salt, SHA-256, with 100000 iterations with wrong (ECDH) key 

So to not hide these failures I prefer not to emit a baseline for those tests.

With regard to imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.html, it had an own GLIB baseline with results better than the general baseline, but now is the opposite. It seems the test is not running properly:

Actual: https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r263609%20(14319)/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-actual.txt

layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
  RenderBlock {HTML} at (0,0) size 800x600
    RenderBody {BODY} at (8,8) size 784x579
      RenderBlock {PRE} at (0,0) size 784x15
        RenderText {#text} at (0,0) size 312x15
          text run at (0,0) width 312: "{\"error\": {\"message\": \"\", \"code\": 404}}"
Comment 1 Diego Pino 2020-08-26 00:40:30 PDT
The following tests started to timeout in r266118:

imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html [ Timeout ]
imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html [ Timeout ]

In GTK both tests are consistently timing out. In WPE both tests are flaky (sometimes fail, sometimes timeout).

https://results.webkit.org/?suite=layout-tests&suite=layout-tests&test=imported%2Fw3c%2Fweb-platform-tests%2FWebCryptoAPI%2Fderive_bits_keys%2Fpbkdf2.https.any.html&test=imported%2Fw3c%2Fweb-platform-tests%2FWebCryptoAPI%2Fderive_bits_keys%2Fpbkdf2.https.any.worker.html&platform=GTK&platform=WPE&platform=mac&platform=ios
Comment 2 Radar WebKit Bug Importer 2024-01-16 13:45:18 PST
<rdar://problem/121074693>