1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const certService = Cc["@mozilla.org/security/local-cert-service;1"].getService(
Ci.nsILocalCertService
);
const overrideService = Cc["@mozilla.org/security/certoverride;1"].getService(
Ci.nsICertOverrideService
);
const certDB = Cc["@mozilla.org/security/x509certdb;1"].getService(
Ci.nsIX509CertDB
);
const CERT_TEST =
"MIHhMIGcAgEAMA0GCSqGSIb3DQEBBQUAMAwxCjAIBgNVBAMTAUEwHhcNMTEwMzIzMjMyNTE3WhcNMTEwNDIyMjMyNTE3WjAMMQowCAYDVQQDEwFBMEwwDQYJKoZIhvcNAQEBBQADOwAwOAIxANFm7ZCfYNJViaDWTFuMClX3+9u18VFGiyLfM6xJrxir4QVtQC7VUC/WUGoBUs9COQIDAQABMA0GCSqGSIb3DQEBBQUAAzEAx2+gIwmuYjJO5SyabqIm4lB1MandHH1HQc0y0tUFshBOMESTzQRPSVwPn77a6R9t";
add_task(async function() {
Assert.ok(Services.clearData);
const TEST_URI = Services.io.newURI("http://test.com/");
const ANOTHER_TEST_URI = Services.io.newURI("https://example.com/");
const YET_ANOTHER_TEST_URI = Services.io.newURI("https://example.test/");
let cert = certDB.constructX509FromBase64(CERT_TEST);
let flags = Ci.nsIClearDataService.CLEAR_CERT_EXCEPTIONS;
ok(cert, "Cert was created");
Assert.equal(
overrideService.isCertUsedForOverrides(cert, true, true),
0,
"Cert should not be used for override yet"
);
overrideService.rememberValidityOverride(
TEST_URI.asciiHost,
TEST_URI.port,
cert,
flags,
false
);
Assert.equal(
overrideService.isCertUsedForOverrides(cert, true, true),
1,
"Cert should be used for override now"
);
await new Promise(aResolve => {
Services.clearData.deleteDataFromHost(
TEST_URI.asciiHostPort,
true /* user request */,
flags,
value => {
Assert.equal(value, 0);
aResolve();
}
);
});
Assert.equal(
overrideService.isCertUsedForOverrides(cert, true, true),
0,
"Cert should not be used for override now"
);
for (let uri of [TEST_URI, ANOTHER_TEST_URI, YET_ANOTHER_TEST_URI]) {
overrideService.rememberValidityOverride(
uri.asciiHost,
uri.port,
cert,
flags,
false
);
Assert.ok(
overrideService.hasMatchingOverride(
uri.asciiHost,
uri.port,
cert,
{},
{}
),
`Should have added override for ${uri.asciiHost}:${uri.port}`
);
}
await new Promise(aResolve => {
Services.clearData.deleteData(flags, value => {
Assert.equal(value, 0);
aResolve();
});
});
for (let uri of [TEST_URI, ANOTHER_TEST_URI, YET_ANOTHER_TEST_URI]) {
Assert.ok(
!overrideService.hasMatchingOverride(
uri.asciiHost,
uri.port,
cert,
{},
{}
),
`Should have removed override for ${uri.asciiHost}:${uri.port}`
);
}
});
|