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 |