Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: nightly_build
- Manifest: security/manager/ssl/tests/unit/xpcshell-smartcards.toml
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
// Any copyright is dedicated to the Public Domain.
"use strict";
// Ensure that the appropriate initialization has happened.
do_get_profile();
add_task(async function test_pkcs11_remote_process() {
let libraryFile = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
libraryFile.append("pkcs11testmodule");
libraryFile.append(ctypes.libraryName("pkcs11testmodule"));
ok(libraryFile.exists(), "The pkcs11testmodule file should exist");
let moduleDB = Cc["@mozilla.org/security/pkcs11moduledb;1"].getService(
Ci.nsIPKCS11ModuleDB
);
await moduleDB.addModule("PKCS11 Test Module", libraryFile.path, 0, 0);
let testModule = await findModuleByName(moduleDB, "PKCS11 Test Module");
notEqual(testModule, null, "should be able to find test module");
let testSlot = findSlotByName(testModule, "Test PKCS11 Slot 二");
notEqual(testSlot, null, "should be able to find 'Test PKCS11 Slot 二'");
equal(
testSlot.name,
"Test PKCS11 Slot 二",
"Actual and expected name should match"
);
equal(
testSlot.desc,
"Test PKCS11 Slot 二",
"Actual and expected description should match"
);
equal(
testSlot.manID,
"Test PKCS11 Manufacturer ID",
"Actual and expected manufacturer ID should match"
);
equal(
testSlot.HWVersion,
"0.0",
"Actual and expected hardware version should match"
);
equal(
testSlot.FWVersion,
"0.0",
"Actual and expected firmware version should match"
);
equal(
testSlot.status,
Ci.nsIPKCS11Slot.SLOT_NOT_LOGGED_IN,
"Actual and expected status should match"
);
equal(
testSlot.tokenName,
"Test PKCS11 Tokeñ 2 Label",
"Actual and expected token name should match"
);
throws(
() => testSlot.getToken(),
/NS_ERROR_NOT_AVAILABLE/,
"getting the token of a remote slot is not yet implemented"
);
await moduleDB.deleteModule("PKCS11 Test Module");
testModule = await findModuleByName(moduleDB, "PKCS11 Test Module");
equal(
testModule,
null,
"should not be able to find test module after unloading it"
);
// Ensure that listing the remote modules also lists modules loaded by
// default in the main process (namely, the internal NSS modules).
let internalModule = await findModuleByName(
moduleDB,
"NSS Internal PKCS #11 Module"
);
notEqual(internalModule, null, "internal module should be listed");
let internalKeySlot = findSlotByName(
internalModule,
"Software Security Device"
);
notEqual(internalKeySlot, null, "internal key slot should be present");
let internalKeyToken = internalKeySlot.getToken();
notEqual(internalKeyToken, null, "should be able to get internal key token");
ok(
internalKeyToken.isInternalKeyToken,
"internal key token should that it's the internal key token"
);
});