// Tests the methods and attributes for interfacing with a PKCS #11 slot.
// Ensure that the appropriate initialization has happened.
do_get_profile();
var gPrompt = {
QueryInterface: ChromeUtils.generateQI(["nsIPrompt"]),
// This intentionally does not use arrow function syntax to avoid an issue // where in the context of the arrow function, |this != gPrompt| due to // how objects get wrapped when going across xpcom boundaries.
alert(title, text) {
equal(
text, "Please authenticate to the token “Test PKCS11 Tokeñ 2 Label”. " + "How to do so depends on the token (for example, using a fingerprint " + "reader or entering a code with a keypad)."
);
},
};
add_task(async function run_test() {
MockRegistrar.register("@mozilla.org/prompter;1", gPromptFactory);
let libraryFile = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
libraryFile.append("pkcs11testmodule");
libraryFile.append(ctypes.libraryName("pkcs11testmodule"));
await loadPKCS11Module(libraryFile, "PKCS11 Test Module", false);
let moduleDB = Cc["@mozilla.org/security/pkcs11moduledb;1"].getService(
Ci.nsIPKCS11ModuleDB
);
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"
);
let testToken = testSlot.getToken();
notEqual(testToken, null, "getToken() should succeed");
equal(
testToken.tokenName, "Test PKCS11 Tokeñ 2 Label", "Spot check: the actual and expected test token names should be equal"
);
ok(!testToken.isInternalKeyToken, "This token is not the internal key token");
testToken.login();
ok(testToken.isLoggedIn, "Should have 'logged in' successfully");
testSlot = findSlotByName(testModule, "Empty PKCS11 Slot");
notEqual(testSlot, null, "should be able to find 'Empty PKCS11 Slot'");
equal(testSlot.tokenName, null, "Empty slot is empty");
equal(
testSlot.status,
Ci.nsIPKCS11Slot.SLOT_NOT_PRESENT, "Actual and expected status should match"
);
let bundle = Services.strings.createBundle( "chrome://pipnss/locale/pipnss.properties"
);
let internalModule = await findModuleByName(
moduleDB, "NSS Internal PKCS #11 Module"
);
notEqual(internalModule, null, "should be able to find internal module");
let cryptoSlot = findSlotByName(
internalModule,
bundle.GetStringFromName("TokenDescription")
);
notEqual(cryptoSlot, "should be able to find internal crypto slot");
equal(
cryptoSlot.desc,
bundle.GetStringFromName("SlotDescription"), "crypto slot should have expected 'desc'"
);
equal(
cryptoSlot.manID,
bundle.GetStringFromName("ManufacturerID"), "crypto slot should have expected 'manID'"
);
let keySlot = findSlotByName(
internalModule,
bundle.GetStringFromName("PrivateTokenDescription")
);
notEqual(keySlot, "should be able to find internal key slot");
equal(
keySlot.desc,
bundle.GetStringFromName("PrivateSlotDescription"), "key slot should have expected 'desc'"
);
equal(
keySlot.manID,
bundle.GetStringFromName("ManufacturerID"), "key slot should have expected 'manID'"
);
});
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.33 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.