Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
* Value of Attribute type (CKA_...)
*/
v: number;
/**
* Type of Attribute
*/
t: AttributeItemType;
}
interface IAttributeItems {
[key: string]: IAttributeItem;
}
const attribute: IAttributeItems = {
/* The following attribute types are defined: */
class: { v: pkcs11.CKA_CLASS, t: TYPE_NUMBER },
token: { v: pkcs11.CKA_TOKEN, t: TYPE_BOOL },
private: { v: pkcs11.CKA_PRIVATE, t: TYPE_BOOL },
label: { v: pkcs11.CKA_LABEL, t: TYPE_STRING },
application: { v: pkcs11.CKA_APPLICATION, t: TYPE_STRING },
value: { v: pkcs11.CKA_VALUE, t: TYPE_BUFFER },
/* CKA_OBJECT_ID is new for v2.10 */
objectId: { v: pkcs11.CKA_OBJECT_ID, t: TYPE_BUFFER },
certType: { v: pkcs11.CKA_CERTIFICATE_TYPE, t: TYPE_NUMBER },
issuer: { v: pkcs11.CKA_ISSUER, t: TYPE_BUFFER },
serial: { v: pkcs11.CKA_SERIAL_NUMBER, t: TYPE_BUFFER },
/* CKA_AC_ISSUER, CKA_OWNER, and CKA_ATTR_TYPES are new
* for v2.10 */
issuerAC: { v: pkcs11.CKA_AC_ISSUER, t: TYPE_BUFFER },
_pkcs11GenerateECKeyPair(pkcs11, pkcs11Session, pkcs11Token) {
// var ski = this._ski();
const privateKeyTemplate = [
// { type: pkcs11js.CKA_ID, value: ski },
{type: pkcs11js.CKA_CLASS, value: pkcs11js.CKO_PRIVATE_KEY},
{type: pkcs11js.CKA_KEY_TYPE, value: pkcs11js.CKK_EC},
{type: pkcs11js.CKA_PRIVATE, value: this._pkcs11Login},
{type: pkcs11js.CKA_TOKEN, value: this._pkcs11Login && pkcs11Token},
{type: pkcs11js.CKA_SIGN, value: true},
{type: pkcs11js.CKA_DERIVE, value: true}
];
const publicKeyTemplate = [
// { type: pkcs11js.CKA_ID, value: ski },
{type: pkcs11js.CKA_CLASS, value: pkcs11js.CKO_PUBLIC_KEY},
{type: pkcs11js.CKA_KEY_TYPE, value: pkcs11js.CKK_EC},
{type: pkcs11js.CKA_PRIVATE, value: false},
{type: pkcs11js.CKA_TOKEN, value: this._pkcs11Login && pkcs11Token},
{type: pkcs11js.CKA_VERIFY, value: true},
{
type: pkcs11js.CKA_EC_PARAMS,
value: Buffer.from(_pkcs11ParamsSizeToOid[this._keySize], 'hex')
}
];
/*
* Call PKCS11 API to generate the key pair.
*
* Return public and private key handles.
*/
const handles = pkcs11.C_GenerateKeyPair(
_pkcs11FindObjects(pkcs11, pkcs11Session, pkcs11Template) {
pkcs11.C_FindObjectsInit(pkcs11Session, pkcs11Template);
const objs = [];
let obj = pkcs11.C_FindObjects(pkcs11Session);
while (obj) {
const objectTemplate = [
{type: pkcs11js.CKA_CLASS},
{type: pkcs11js.CKA_KEY_TYPE},
{type: pkcs11js.CKA_PRIVATE},
{type: pkcs11js.CKA_TOKEN},
{type: pkcs11js.CKA_ID}
];
logger.debug(__func() + 'obj: ' + util.inspect(obj, {depth: null}));
logger.debug(__func() + 'attr: ' +
util.inspect(this._pkcs11GetAttributeValue(pkcs11, pkcs11Session, obj, objectTemplate)));
objs.push(obj);
obj = pkcs11.C_FindObjects(pkcs11Session);
}
pkcs11.C_FindObjectsFinal(pkcs11Session);
return objs;
}
"use strict";
var pkcs11 = require("pkcs11js");
var TYPE_NUMBER = "number";
var TYPE_BOOL = "boolen";
var TYPE_STRING = "string";
var TYPE_BUFFER = "buffer";
var TYPE_DATE = "date";
var attribute = {
class: { v: pkcs11.CKA_CLASS, t: TYPE_NUMBER },
token: { v: pkcs11.CKA_TOKEN, t: TYPE_BOOL },
private: { v: pkcs11.CKA_PRIVATE, t: TYPE_BOOL },
label: { v: pkcs11.CKA_LABEL, t: TYPE_STRING },
application: { v: pkcs11.CKA_APPLICATION, t: TYPE_STRING },
value: { v: pkcs11.CKA_VALUE, t: TYPE_BUFFER },
objectId: { v: pkcs11.CKA_OBJECT_ID, t: TYPE_BUFFER },
certType: { v: pkcs11.CKA_CERTIFICATE_TYPE, t: TYPE_NUMBER },
issuer: { v: pkcs11.CKA_ISSUER, t: TYPE_BUFFER },
serial: { v: pkcs11.CKA_SERIAL_NUMBER, t: TYPE_BUFFER },
issuerAC: { v: pkcs11.CKA_AC_ISSUER, t: TYPE_BUFFER },
owner: { v: pkcs11.CKA_OWNER, t: TYPE_BUFFER },
attrTypes: { v: pkcs11.CKA_ATTR_TYPES, t: TYPE_BUFFER },
trusted: { v: pkcs11.CKA_TRUSTED, t: TYPE_BOOL },
certCategory: { v: pkcs11.CKA_CERTIFICATE_CATEGORY, t: TYPE_NUMBER },
javaDomain: { v: pkcs11.CKA_JAVA_MIDP_SECURITY_DOMAIN, t: TYPE_NUMBER },
url: { v: pkcs11.CKA_URL, t: TYPE_STRING },