export interface AbstractPkcs11 {
certificates(slotId: string, parseCerts?: boolean, callback?: (error: T1CLibException, data: Pkcs11ObjectCertificatesResponse) => void): Promise<Pkcs11ObjectCertificatesResponse>;
signData(data: Pkcs11SignData, callback?: (error: T1CLibException, data: Pkcs11ObjectSignResponse) => void): Promise<Pkcs11ObjectSignResponse>;
slots(callback?: (error: T1CLibException, data: Pkcs11ObjectSlotsResponse) => void): Promise<Pkcs11ObjectSlotsResponse>;
slotsWithTokenPresent(callback?: (error: T1CLibException, data: Pkcs11ObjectSlotsResponse) => void): Promise<Pkcs11ObjectSlotsResponse>;
token(slotId: string, callback?: (error: T1CLibException, data: Pkcs11ObjectTokenResponse) => void): Promise<Pkcs11ObjectTokenResponse>;
}export class Pkcs11ObjectInfoResponse extends DataObjectResponse {
constructor(public data: Pkcs11Info, public success: boolean) {
super(data, success);
}
}
export class Pkcs11ObjectSign {
constructor(public data: string) {
}
}
export class Pkcs11ObjectSignResponse {
constructor(public data: Pkcs11ObjectSign, public success: boolean) {
}
}
export class Pkcs11ObjectSlots {
constructor(public slots: Pkcs11Slot[]) {
}
}
export class Pkcs11ObjectSlotsResponse {
constructor(public data: Pkcs11ObjectSlots, public success: boolean) {
}
}
export class Pkcs11ObjectCertificates {
constructor(public certificates: Pkcs11ObjectCertificate[]) {}
}
export class Pkcs11ObjectCertificate {
constructor(public id: string, public certificate: string, public parsed?: Certificate) {}
}
export class Pkcs11ObjectCertificatesResponse {
constructor(public data: Pkcs11ObjectCertificates, public success: boolean) {
}
}
export class Pkcs11SignData {
constructor(public slotId: string,
public certificateId: string,
public algorithm: string,
public data: string,
public pin?: string,
public osDialog?: boolean) {}
}
export class Pkcs11ObjectTokenResponse {
constructor(public data: Pkcs11TokenInfo, public success: boolean) {
}
}
export class Pkcs11SetConfigResponse {
constructor(public data: string, public success: boolean) {
}
}
export class Pkcs11Slots {
constructor(public slots: Pkcs11Slot[]) {
}
}
export class Pkcs11Slot {
constructor(public slot: number,
public description: string) {
}
}
export class Pkcs11TokenInfo {
constructor(public slot: string,
public label: string,
public manufacturerId: string,
public model: string,
public serialNumber: string,
public flags: string,
public ulMaxSessionCount: number,
public ulSessionCount: number,
public ulMaxRwSessionCount: number,
public ulMaxPinLen: number,
public ulMinPinLen: number,
public ulTotalPublicMemory: number,
public ulFreePublicMemory: number,
public ulTotalPrivateMemory: number,
public ulFreePrivateMemory: number,
public hardwareVersion: string,
public firmwareVersion: string) {
}
}const winLocation = "C:\\Windows\\System32\\eTPKCS11.dll"
const macLocation = "/usr/local/lib/libeTPkcs11.dylib";
T1CSdk.T1CClient.initialize(config).then(res => {
client = res;
console.log("Client config: ", client.localConfig)
core = client.core();
// Depending on the OS select the appropriate location of the library
const pkcs11 = client.pkcs11(winLocation);
}, err => {});
const slotId = 0;
pkcs11.certificates(slotId, true).then(res => {
console.log(JSON.stringify(data, null, ' '));
}, err => {
console.log("Error:",JSON.stringify(err, null, ' '));
});pkcs11.slots();{
"data":
[
{
"slot": 0,
"description": "eToken 5100",
},
{
"slot": 1,
"description": "",
}
]
"success": true
}pkcs11.slotsWithTokenPresent(callback);{
"data":
[
{
"slot": 0,
"description": "eToken 5100"
}
]
"success": true
}pkcs11.token(slot_id, callback);{
"data":
{
"slot": 1,
"label": "Token Label",
"manufacturerId": "Gemalto",
"model": "Safenet Token e5100",
"serialNumber": "1234567890",
"flags": 7,
"maxSessionCount": 10,
"sessionCount": 1,
"maxRwSessionCount": 5,
"rwSessionCount": 1,
"maxPinLength": 20,
"minPinLength": 8,
"totalPublicMemory": 10000,
"freePublicMemory": 5000,
"totalPrivateMemory": 1000,
"freePrivateMemory": 50,
"hardwareVersion": "1",
"firmwareVersion": "1"
},
"success": true
}// retrieve certificates for token in slot_id 0
pkcs11.certificates(0, false);{
"data": [
{
"certificate": "MIIFjjCCA3agAwI...rTBDdrlEWVaLrY+M+xeIctrC0WnP7u4xg==",
"id": "E8CE05618E79A79825722AE067EC0029851D860D"
},
{
"certificate": "MIIFjjCCA3agAwI...rTBDdrlEWVaLrY+M+xeIctrC0WnP7u4xg==",
"id": "9F8F1CD68867526B1DF919832219B217282D2B0B"
}
],
"success": true
}var signDataPayload = {
slotId: 1,
certificateId: "9F8F1CD68867526B1DF919832219B217282D2B0B",
pin: "thepincodeforthetoken",
data: "hashed data"
algorithm: "sha256"
}
pkcs11.signData(signDataPayload, callback);{
"data": "L3BWs7lvoajPg5tC9GEmlSMdXMcDkNDUVVvt+KFqbJbXkJdI3DGoM3IOeXLaeTCxKmJ33/QQApL1nEAMuHY38V41czyswfSdpnqeex3EisXKkiYHeNzt9AXeoxDtsWbGkejKqru6X4xzAy/1SnccjZ2BQB/uUwyfyyweFjbZAGCLfTzWraCxG0ud2c8itsjmsBgXSuGjLqxKIJXbtuX22gd0nc4LeZLA91sxaoNFBCEVlOgJ/oJncFylf6T/Tz9R4VOA9kSf6NB1tAMsFEsihgjZafu/rzlrOfzZw4YY/T32LKY4Y2zNnDhJAucqflZjopGadDvkkSmTvxxEJuE+Bw==",
"success": true
}function callback(err,data) {
if(err){
console.log("Error:",JSON.stringify(err, null, ' '));
}
else {
console.log(JSON.stringify(data, null, ' '));
}
}{
success: false,
description: "some error description",
code: "some error code"
}