| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | |
| 2 <html> | |
| 3 <head> | |
| 4 <script src="../../resources/js-test.js"></script> | |
| 5 </head> | |
| 6 <body> | |
| 7 <script> | |
| 8 description("Tests RTCPeerConnection.generateCertificate RSA/ECDSA."); | |
| 9 | |
| 10 // Constants | |
| 11 var minuteInMs = 60 * 1000; | |
| 12 var dayInMs = 24 * 60 * minuteInMs; | |
| 13 | |
| 14 // Signature of the last generateCertificate call. | |
| 15 var generateCallString = null; | |
| 16 // Global certificate variables so that the "should..." methods can evaluate the
m. | |
| 17 var certRSA = null; | |
| 18 var certECDSA = null; | |
| 19 var certExpiresNegativeOneDay = null; | |
| 20 var certExpiresZero = null; | |
| 21 var certExpiresPositiveOneDay = null; | |
| 22 | |
| 23 // 1: RSA-2048 using public exponent = 65537. | |
| 24 function generate1RSA() | |
| 25 { | |
| 26 generateCallString = 'generateCertificate({ name: "RSASSA-PKCS1-v1_5", mod
ulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), hash: "SHA-256" })'
; | |
| 27 webkitRTCPeerConnection.generateCertificate({ name: "RSASSA-PKCS1-v1_5", mod
ulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), hash: "SHA-256" }) | |
| 28 .then(generate1RSASuccessful, generate1RSAFailed); | |
| 29 } | |
| 30 function generate1RSASuccessful(certificate) | |
| 31 { | |
| 32 certRSA = certificate; | |
| 33 testPassed(generateCallString); | |
| 34 certificateSanityCheck('certRSA'); | |
| 35 generate2ECDSA(); | |
| 36 } | |
| 37 function generate1RSAFailed() | |
| 38 { | |
| 39 testFailed(generateCallString); | |
| 40 generate2ECDSA(); | |
| 41 } | |
| 42 | |
| 43 // 2: ECDSA using NIST P-256. | |
| 44 function generate2ECDSA() | |
| 45 { | |
| 46 generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-
256" })'; | |
| 47 webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-
256" }) | |
| 48 .then(generate2ECDSASuccessful, generate2ECDSAFailed); | |
| 49 } | |
| 50 function generate2ECDSASuccessful(certificate) | |
| 51 { | |
| 52 certECDSA = certificate; | |
| 53 testPassed(generateCallString); | |
| 54 certificateSanityCheck('certECDSA'); | |
| 55 generate3ExpiresNegativeOneDay(); | |
| 56 } | |
| 57 function generate2ECDSAFailed() | |
| 58 { | |
| 59 testFailed(generateCallString); | |
| 60 generate3ExpiresNegativeOneDay(); | |
| 61 } | |
| 62 | |
| 63 // 3-5: Verify that the |expires| attribute works (generate ECDSA because its fa
ster). | |
| 64 function generate3ExpiresNegativeOneDay() | |
| 65 { | |
| 66 generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-
256", expires:-dayInMs })'; | |
| 67 webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-
256", expires:-dayInMs }) | |
| 68 .then(function(certificate) { certExpiresNegativeOneDay = certificate; g
enerate4ExpiresZero(); }, generate4ExpiresZero); | |
| 69 } | |
| 70 function generate4ExpiresZero() | |
| 71 { | |
| 72 generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-
256", expires:0 })'; | |
| 73 webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-
256", expires:0 }) | |
| 74 .then(function(certificate) { certExpiresZero = certificate; generate5Ex
piresPositiveOneDay(); }, generate5ExpiresPositiveOneDay); | |
| 75 } | |
| 76 function generate5ExpiresPositiveOneDay() | |
| 77 { | |
| 78 generateCallString = 'generateCertificate({ name: "ECDSA", namedCurve: "P-
256", expires:dayInMs })'; // +1 day | |
| 79 webkitRTCPeerConnection.generateCertificate({ name: "ECDSA", namedCurve: "P-
256", expires:dayInMs }) | |
| 80 .then(function(certificate) { certExpiresPositiveOneDay = certificate; g
enerate3to5ExpiresResolved(); }, generate3to5ExpiresResolved); | |
| 81 } | |
| 82 function generate3to5ExpiresResolved() | |
| 83 { | |
| 84 // A negative |expires| value is not a DOMTimeStamp, it should be ignored an
d | |
| 85 // generate a certificate that has not expired. | |
| 86 certificateSanityCheck('certExpiresNegativeOneDay'); | |
| 87 | |
| 88 // Check that the zero expiration certificate was generated but has expired. | |
| 89 shouldBeNonNull('certExpiresZero'); | |
| 90 shouldBeTrue('new Date().getTime() >= certExpiresZero.expires'); | |
| 91 | |
| 92 // Check that the +1 day expiration certificate expires in approximately 1 d
ay (+/- 1 minute). | |
| 93 shouldBeNonNull('certExpiresPositiveOneDay'); | |
| 94 shouldBeTrue('Math.abs(certExpiresPositiveOneDay.expires - (new Date().getTi
me() + dayInMs)) <= minuteInMs'); | |
| 95 | |
| 96 finishJSTest(); | |
| 97 } | |
| 98 | |
| 99 // Helper functions. | |
| 100 function certificateSanityCheck(certVariableName) | |
| 101 { | |
| 102 shouldBeNonNull(certVariableName); | |
| 103 shouldBeTrue('new Date().getTime() < ' + certVariableName + '.expires'); | |
| 104 } | |
| 105 | |
| 106 // Run each generate test sequentially. The ith generate method will make sure | |
| 107 // the (i+1)st generate method is executed when its promise's callbacks are | |
| 108 // invoked. generate2ECDSA's callback methods mark the end of the async tests. | |
| 109 generate1RSA(); | |
| 110 | |
| 111 window.jsTestIsAsync = true; | |
| 112 window.successfullyParsed = true; | |
| 113 </script> | |
| 114 </body> | |
| 115 </html> | |
| OLD | NEW |