blob: a588d269429ababd6e246be9b381808e21e9130e [file] [log] [blame]
// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
const TEST_TOKEN_LABEL = "test token";
const TEST_SO_PIN = "000000";
const TEST_USER_PIN = "111111";
entd.onLoad = function () {
var Slot = entd.crypto.Pkcs11.Slot;
var Token = entd.crypto.Pkcs11.Token;
var Session = entd.crypto.Pkcs11.Session;
var pkcs11 = new entd.crypto.Pkcs11();
var slot = pkcs11.slots[0];
if (!(slot.flags & Slot.CKF_TOKEN_PRESENT))
return println("Expected slot 0 to have a token present");
var token = slot.token;
if (!(token instanceof Token))
return println("Expected instanceof entd.Pkcs11.Token");
delete slot.token;
if (!slot.token)
return println("Didn't expect to be able to delete slot.token.");
slot.token = 1;
if (slot.token == 1)
return println("Didn't expect to be able to change slot.token.");
if (token.flags & Token.CKF_TOKEN_INITIALIZED)
return println("Expected token to be uninitialized");
if (!(token.flags & (Token.CKF_USER_PIN_TO_BE_CHANGED |
Token.CKF_SO_PIN_TO_BE_CHANGED))) {
return println("Expected SO and User PINs would need to be changed.");
}
if (token.flags & Token.CKF_USER_PIN_INITIALIZED) {
// openCryptoki sets the initial user pin to a known value, rather
// than leaving it uninitialized.
return println("Expected user PIN would not have been initialized");
}
token.initToken(Token.DEFAULT_SO_PIN, TEST_TOKEN_LABEL);
token.refresh();
if (!(token.flags & Token.CKF_TOKEN_INITIALIZED)) {
return println("Expected token to be initialized after calling " +
"initToken()");
}
if (token.label != TEST_TOKEN_LABEL) {
return println("Expected token label to be " + TEST_TOKEN_LABEL +
", found: " + token.label);
}
var session = token.openSession(Token.CKF_RW_SESSION);
if (!(session instanceof Session))
return println("Expected instanceof entd.crypto.Pkcs11.Session");
session.login(Session.CKU_SO, Token.DEFAULT_SO_PIN);
session.setPin(Token.DEFAULT_SO_PIN, TEST_SO_PIN);
token.refresh();
if (token.flags & Token.CKF_SO_PIN_TO_BE_CHANGED)
return println("Expected SO pin would be ok after setPin()");
session.close();
session = token.openSession(Token.CKF_RW_SESSION);
session.login(Session.CKU_USER, Token.DEFAULT_USER_PIN);
session.setPin(Token.DEFAULT_USER_PIN, TEST_USER_PIN);
session.logout();
token.refresh();
if (token.flags & Token.CKF_USER_PIN_TO_BE_CHANGED)
return println("Expected User pin would be ok after setPin()");
if (!(token.flags & Token.CKF_USER_PIN_INITIALIZED))
return println("Expected User pin would be initialized after setPin()");
println("LOOKS OK");
}