| OLD | NEW | 
|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> | 
| 2 <html> | 2 <html> | 
| 3 <head> | 3 <head> | 
| 4 <script src="../fast/js/resources/js-test-pre.js"></script> | 4 <script src="../fast/js/resources/js-test-pre.js"></script> | 
| 5 <script src="resources/common.js"></script> | 5 <script src="resources/common.js"></script> | 
| 6 </head> | 6 </head> | 
| 7 <body> | 7 <body> | 
| 8 <p id="description"></p> | 8 <p id="description"></p> | 
| 9 <div id="console"></div> | 9 <div id="console"></div> | 
| 10 | 10 | 
| 11 <script> | 11 <script> | 
| 12 description("Tests cypto.subtle.generateKey."); | 12 description("Tests cypto.subtle.generateKey."); | 
| 13 | 13 | 
| 14 jsTestIsAsync = true; |  | 
| 15 |  | 
| 16 extractable = true; | 14 extractable = true; | 
| 17 keyUsages = ['encrypt', 'decrypt']; | 15 keyUsages = ['encrypt', 'decrypt']; | 
| 18 | 16 | 
| 19 // Invalid keyUsages | 17 // Invalid keyUsages | 
| 20 aesCbc = { name: 'aes-cbc', length: 1024 }; | 18 aesCbc = { name: 'aes-cbc', length: 1024 }; | 
| 21 shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, -1)"); | 19 shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, -1)"); | 
| 22 shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, null)"); | 20 shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, null)"); | 
| 23 shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, ['boo'])"); | 21 shouldThrow("crypto.subtle.generateKey(aesCbc, extractable, ['boo'])"); | 
| 24 | 22 | 
| 25 // --------------------------------------------------- | 23 // --------------------------------------------------- | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 66 // --------------------------------------------------- | 64 // --------------------------------------------------- | 
| 67 | 65 | 
| 68 // Note: these are the same tests as for RSASSA-PKCS1-v1_5 above. | 66 // Note: these are the same tests as for RSASSA-PKCS1-v1_5 above. | 
| 69 | 67 | 
| 70 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      -30}, extractable , keyUsages)"); | 68 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      -30}, extractable , keyUsages)"); | 
| 71 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      NaN}, extractable , keyUsages)"); | 69 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      NaN}, extractable , keyUsages)"); | 
| 72 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5'}, extractable ,
      keyUsages)"); | 70 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5'}, extractable ,
      keyUsages)"); | 
| 73 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      10}, extractable , keyUsages)"); | 71 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      10}, extractable , keyUsages)"); | 
| 74 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      10, publicExponent: 10}, extractable , keyUsages)"); | 72 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      10, publicExponent: 10}, extractable , keyUsages)"); | 
| 75 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      10, publicExponent: null}, extractable , keyUsages)"); | 73 shouldThrow("crypto.subtle.generateKey({name: 'RSAES-PKCS1-v1_5', modulusLength:
      10, publicExponent: null}, extractable , keyUsages)"); | 
| 76 |  | 
| 77 // Note that fractional numbers are truncated, so this length should be |  | 
| 78 // interpreted as 1024. |  | 
| 79 crypto.subtle.generateKey({name: 'aes-cbc', length: 1024.9}, extractable, ['decr
     ypt', 'encrypt']).then(function(result) { |  | 
| 80     key = result; |  | 
| 81     shouldBe("key.type", "'private'") |  | 
| 82     shouldBe("key.extractable", "true") |  | 
| 83     shouldBe("key.algorithm.name", "'AES-CBC'") |  | 
| 84     shouldBe("key.algorithm.length", "1024") |  | 
| 85     shouldBe("key.usages.join(',')", "'encrypt,decrypt'") |  | 
| 86 |  | 
| 87     return crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256' }}, f
     alse, ['sign']); |  | 
| 88 }).then(function(result) { |  | 
| 89     key = result; |  | 
| 90     shouldBe("key.type", "'private'") |  | 
| 91     shouldBe("key.extractable", "false") |  | 
| 92     shouldBe("key.algorithm.name", "'HMAC'") |  | 
| 93     shouldBe("key.algorithm.hash.name", "'SHA-256'") |  | 
| 94     shouldBe("key.algorithm.length", "null") |  | 
| 95     shouldBe("key.usages.join(',')", "'sign'") |  | 
| 96 |  | 
| 97     return crypto.subtle.generateKey({name: 'hmac', hash: {name: 'sha-256' }, le
     ngth:48 }, false, ['sign']); |  | 
| 98 }).then(function(result) { |  | 
| 99     key = result; |  | 
| 100     shouldBe("key.type", "'private'") |  | 
| 101     shouldBe("key.extractable", "false") |  | 
| 102     shouldBe("key.algorithm.name", "'HMAC'") |  | 
| 103     shouldBe("key.algorithm.hash.name", "'SHA-256'") |  | 
| 104     shouldBe("key.algorithm.length", "48") |  | 
| 105     shouldBe("key.usages.join(',')", "'sign'") |  | 
| 106 |  | 
| 107     return crypto.subtle.generateKey({name: 'RSASSA-PKCS1-v1_5', modulusLength: 
     10, publicExponent: new Uint8Array([0])}, false, ['sign']); |  | 
| 108 }).then(function(result) { |  | 
| 109     keyPair = result; |  | 
| 110 |  | 
| 111     shouldBeDefined("keyPair.publicKey"); |  | 
| 112     shouldBeDefined("keyPair.privateKey"); |  | 
| 113 |  | 
| 114     shouldBe("keyPair.publicKey.type", "'public'"); |  | 
| 115     shouldBe("keyPair.publicKey.algorithm.name", "'RSASSA-PKCS1-v1_5'"); |  | 
| 116 |  | 
| 117     shouldBe("keyPair.privateKey.type", "'private'"); |  | 
| 118     shouldBe("keyPair.privateKey.algorithm.name", "'RSASSA-PKCS1-v1_5'"); |  | 
| 119 |  | 
| 120     // KeyPair should return the same Key wrapper |  | 
| 121     keyPair.publicKey.foo = "bar"; |  | 
| 122     shouldBe("keyPair.publicKey.foo", "'bar'"); |  | 
| 123     if (window.gc) { |  | 
| 124         window.gc(); |  | 
| 125         window.gc(); |  | 
| 126     } |  | 
| 127     shouldBe("keyPair.publicKey.foo", "'bar'"); |  | 
| 128 |  | 
| 129 }).then(finishJSTest, failAndFinishJSTest); |  | 
| 130 |  | 
| 131 </script> | 74 </script> | 
| 132 | 75 | 
| 133 <script src="../fast/js/resources/js-test-post.js"></script> | 76 <script src="../fast/js/resources/js-test-post.js"></script> | 
| 134 </body> | 77 </body> | 
| 135 </html> | 78 </html> | 
| OLD | NEW | 
|---|