node-opcua-pki
Advanced tools
Comparing version 2.17.0 to 2.18.0
@@ -0,0 +0,0 @@ "use strict"; |
@@ -0,0 +0,0 @@ #!/usr/bin/env node |
import { ErrorCallback } from "./pki/common"; | ||
export declare function main(argumentsList: string, _done?: ErrorCallback): void; |
@@ -5,3 +5,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -661,3 +662,3 @@ // | ||
type: "string", | ||
describe: "the certificate subject ( for instance /C=FR/ST=Centre/L=Orleans/O=SomeOrganization/CN=Hello )", | ||
describe: "the certificate subject ( for instance C=FR/ST=Centre/L=Orleans/O=SomeOrganization/CN=Hello )", | ||
}, | ||
@@ -664,0 +665,0 @@ }; |
@@ -0,0 +0,0 @@ export * from "./pki/toolbox"; |
@@ -20,3 +20,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -23,0 +24,0 @@ // |
export declare function makeApplicationUrn(hostname: string, suffix: string): string; |
@@ -7,3 +7,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -10,0 +11,0 @@ // |
@@ -0,0 +0,0 @@ /** |
@@ -0,0 +0,0 @@ "use strict"; |
@@ -0,0 +0,0 @@ export declare function check_system_openssl_version(callback: (err: Error | null, output?: string) => void): void; |
@@ -5,3 +5,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -8,0 +9,0 @@ // |
@@ -10,2 +10,6 @@ export interface SubjectOptions { | ||
} | ||
/** | ||
* subjectName The subject name to use for the Certificate. | ||
* If not specified the ApplicationName and/or domainNames are used to create a suitable default value. | ||
*/ | ||
export declare class Subject implements SubjectOptions { | ||
@@ -21,3 +25,4 @@ readonly commonName?: string; | ||
static parse(str: string): SubjectOptions; | ||
toStringForOPCUA(): string; | ||
toString(): string; | ||
} |
@@ -5,3 +5,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -35,2 +36,17 @@ // | ||
}; | ||
const enquoteIfNecessary = (str) => { | ||
str = str.replace(/"/g, "”"); | ||
return str.match(/\/|=/) ? `"${str}"` : str; | ||
}; | ||
const unquote = (str) => str.replace(/"/gm, ""); | ||
const unquote2 = (str) => { | ||
if (!str) | ||
return str; | ||
const m = str.match(/^"(.*)"$/); | ||
return m ? m[1] : str; | ||
}; | ||
/** | ||
* subjectName The subject name to use for the Certificate. | ||
* If not specified the ApplicationName and/or domainNames are used to create a suitable default value. | ||
*/ | ||
class Subject { | ||
@@ -41,9 +57,9 @@ constructor(options) { | ||
} | ||
this.commonName = options.commonName; | ||
this.organization = options.organization; | ||
this.organizationalUnit = options.organizationalUnit; | ||
this.locality = options.locality; | ||
this.state = options.state; | ||
this.country = options.country; | ||
this.domainComponent = options.domainComponent; | ||
this.commonName = unquote2(options.commonName); | ||
this.organization = unquote2(options.organization); | ||
this.organizationalUnit = unquote2(options.organizationalUnit); | ||
this.locality = unquote2(options.locality); | ||
this.state = unquote2(options.state); | ||
this.country = unquote2(options.country); | ||
this.domainComponent = unquote2(options.domainComponent); | ||
} | ||
@@ -62,34 +78,49 @@ static parse(str) { | ||
const longName = _keys[s[0]]; | ||
if (!longName) { | ||
throw new Error("Invalid field found in subject name " + s[0]); | ||
} | ||
const value = s[1]; | ||
options[longName] = Buffer.from(value, "ascii").toString("utf8"); | ||
options[longName] = unquote(Buffer.from(value, "ascii").toString("utf8")); | ||
}); | ||
return options; | ||
} | ||
toString() { | ||
let tmp = ""; | ||
toStringForOPCUA() { | ||
// https://reference.opcfoundation.org/v104/GDS/docs/7.6.4/ | ||
// The format of the subject name is a sequence of name value pairs separated by a ‘/’. | ||
// The name shall be one of ‘CN’, ‘O’, ‘OU’, ‘DC’, ‘L’, ‘S’ or ‘C’ and | ||
// shall be followed by a ‘=’ and then followed by the value. | ||
// The value may be any printable character except for ‘”’. | ||
// If the value contains a ‘/’ or a ‘=’ then it shall be enclosed in double quotes (‘”’). | ||
const tmp = []; | ||
if (this.country) { | ||
tmp += "/C=" + this.country; | ||
tmp.push("C=" + enquoteIfNecessary(this.country)); | ||
} | ||
if (this.state) { | ||
tmp += "/ST=" + this.state; | ||
tmp.push("ST=" + enquoteIfNecessary(this.state)); | ||
} | ||
if (this.locality) { | ||
tmp += "/L=" + this.locality; | ||
tmp.push("L=" + enquoteIfNecessary(this.locality)); | ||
} | ||
if (this.organization) { | ||
tmp += "/O=" + this.organization; | ||
tmp.push("O=" + enquoteIfNecessary(this.organization)); | ||
} | ||
if (this.organizationalUnit) { | ||
tmp += "/OU=" + this.organization; | ||
tmp.push("OU=" + enquoteIfNecessary(this.organizationalUnit)); | ||
} | ||
if (this.commonName) { | ||
tmp += "/CN=" + this.commonName; | ||
tmp.push("CN=" + enquoteIfNecessary(this.commonName)); | ||
} | ||
if (this.domainComponent) { | ||
tmp += "/DC=" + this.domainComponent; | ||
tmp.push("DC=" + enquoteIfNecessary(this.domainComponent)); | ||
} | ||
return tmp; | ||
return tmp.join("/"); | ||
} | ||
toString() { | ||
// standard for SSL is to have a / in front of each Field | ||
// see https://www.digicert.com/kb/ssl-support/openssl-quick-reference-guide.htm | ||
const t = this.toStringForOPCUA(); | ||
return t ? "/" + t : t; | ||
} | ||
} | ||
exports.Subject = Subject; | ||
//# sourceMappingURL=subject.js.map |
@@ -0,0 +0,0 @@ import { ErrorCallback, Filename, KeySize } from "./common"; |
@@ -7,3 +7,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -106,3 +107,3 @@ // | ||
// tslint:disable:no-empty | ||
(0, toolbox_1.displayTitle)("Create Certificate Authority (CA)", (err) => { }); | ||
(0, toolbox_1.displayTitle)("Create Certificate Authority (CA)", (_err) => { }); | ||
const indexFileAttr = path.join(caRootDir, "index.txt.attr"); | ||
@@ -109,0 +110,0 @@ if (!fs.existsSync(indexFileAttr)) { |
@@ -0,0 +0,0 @@ /// <reference types="node" /> |
@@ -5,3 +5,4 @@ "use strict"; | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -8,0 +9,0 @@ // |
@@ -0,0 +0,0 @@ export declare type KeySize = 1024 | 2048 | 3072 | 4096; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=common.js.map |
declare const config: string; | ||
export default config; |
@@ -0,0 +0,0 @@ "use strict"; |
declare const config: string; | ||
export default config; |
@@ -0,0 +0,0 @@ "use strict"; |
@@ -0,0 +0,0 @@ "use strict"; |
@@ -140,3 +140,3 @@ import { SubjectOptions } from "../misc/subject"; | ||
* @param params.purpose | ||
* @param [params.subject= "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=ZZNodeOPCUA"] | ||
* @param [params.subject= "C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=ZZNodeOPCUA"] | ||
* @param callback | ||
@@ -143,0 +143,0 @@ */ |
"use strict"; | ||
/* eslint-disable indent */ | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua-pki | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -41,3 +43,3 @@ // | ||
function quote(str) { | ||
return "\"" + str + "\""; | ||
return '"' + str + '"'; | ||
} | ||
@@ -415,3 +417,3 @@ exports.quote = quote; | ||
// process.env.OPENSSL_CONF =""; | ||
const subjectOptions = subject ? " -subj \"" + subject + "\"" : ""; | ||
const subjectOptions = subject ? ' -subj "' + subject + '"' : ""; | ||
async.series([ | ||
@@ -533,3 +535,3 @@ (callback) => { | ||
* @param params.purpose | ||
* @param [params.subject= "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=ZZNodeOPCUA"] | ||
* @param [params.subject= "C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=ZZNodeOPCUA"] | ||
* @param callback | ||
@@ -599,5 +601,5 @@ */ | ||
q(n(certificateRequestFilename)) + | ||
" -subj \"" + | ||
' -subj "' + | ||
subject + | ||
"\"", {}, callback); | ||
'"', {}, callback); | ||
}, | ||
@@ -604,0 +606,0 @@ // Xx // Step 3: Remove Passphrase from Key |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -908,3 +909,3 @@ // | ||
type: "string", | ||
describe: "the certificate subject ( for instance /C=FR/ST=Centre/L=Orleans/O=SomeOrganization/CN=Hello )", | ||
describe: "the certificate subject ( for instance C=FR/ST=Centre/L=Orleans/O=SomeOrganization/CN=Hello )", | ||
}, | ||
@@ -911,0 +912,0 @@ }; |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua-pki | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -6,0 +7,0 @@ // |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua-pki | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -6,0 +7,0 @@ // |
@@ -0,0 +0,0 @@ /** |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -6,0 +7,0 @@ // |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua-pki | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -43,2 +44,16 @@ // | ||
const enquoteIfNecessary = (str: string) => { | ||
str = str.replace(/"/g, "”"); | ||
return str.match(/\/|=/) ? `"${str}"` : str; | ||
}; | ||
const unquote = (str: string) => str.replace(/"/gm, ""); | ||
const unquote2 = (str?: string | undefined) => { | ||
if (!str) return str; | ||
const m = str.match(/^"(.*)"$/); | ||
return m ? m[1] : str; | ||
}; | ||
/** | ||
* subjectName The subject name to use for the Certificate. | ||
* If not specified the ApplicationName and/or domainNames are used to create a suitable default value. | ||
*/ | ||
export class Subject implements SubjectOptions { | ||
@@ -57,9 +72,9 @@ public readonly commonName?: string; | ||
} | ||
this.commonName = options.commonName; | ||
this.organization = options.organization; | ||
this.organizationalUnit = options.organizationalUnit; | ||
this.locality = options.locality; | ||
this.state = options.state; | ||
this.country = options.country; | ||
this.domainComponent = options.domainComponent; | ||
this.commonName = unquote2(options.commonName); | ||
this.organization = unquote2(options.organization); | ||
this.organizationalUnit = unquote2(options.organizationalUnit); | ||
this.locality = unquote2(options.locality); | ||
this.state = unquote2(options.state); | ||
this.country = unquote2(options.country); | ||
this.domainComponent = unquote2(options.domainComponent); | ||
} | ||
@@ -80,5 +95,8 @@ | ||
} | ||
const longName = (_keys as any)[s[0]]; | ||
const longName = (_keys as Record<string, string>)[s[0]]; | ||
if (!longName) { | ||
throw new Error("Invalid field found in subject name " + s[0]); | ||
} | ||
const value = s[1]; | ||
options[longName] = Buffer.from(value, "ascii").toString("utf8"); | ||
options[longName] = unquote(Buffer.from(value, "ascii").toString("utf8")); | ||
}); | ||
@@ -88,27 +106,40 @@ return options as SubjectOptions; | ||
public toString() { | ||
let tmp = ""; | ||
public toStringForOPCUA(): string { | ||
// https://reference.opcfoundation.org/v104/GDS/docs/7.6.4/ | ||
// The format of the subject name is a sequence of name value pairs separated by a ‘/’. | ||
// The name shall be one of ‘CN’, ‘O’, ‘OU’, ‘DC’, ‘L’, ‘S’ or ‘C’ and | ||
// shall be followed by a ‘=’ and then followed by the value. | ||
// The value may be any printable character except for ‘”’. | ||
// If the value contains a ‘/’ or a ‘=’ then it shall be enclosed in double quotes (‘”’). | ||
const tmp: string[] = []; | ||
if (this.country) { | ||
tmp += "/C=" + this.country; | ||
tmp.push("C=" + enquoteIfNecessary(this.country)); | ||
} | ||
if (this.state) { | ||
tmp += "/ST=" + this.state; | ||
tmp.push("ST=" + enquoteIfNecessary(this.state)); | ||
} | ||
if (this.locality) { | ||
tmp += "/L=" + this.locality; | ||
tmp.push("L=" + enquoteIfNecessary(this.locality)); | ||
} | ||
if (this.organization) { | ||
tmp += "/O=" + this.organization; | ||
tmp.push("O=" + enquoteIfNecessary(this.organization)); | ||
} | ||
if (this.organizationalUnit) { | ||
tmp += "/OU=" + this.organization; | ||
tmp.push("OU=" + enquoteIfNecessary(this.organizationalUnit)); | ||
} | ||
if (this.commonName) { | ||
tmp += "/CN=" + this.commonName; | ||
tmp.push("CN=" + enquoteIfNecessary(this.commonName)); | ||
} | ||
if (this.domainComponent) { | ||
tmp += "/DC=" + this.domainComponent; | ||
tmp.push("DC=" + enquoteIfNecessary(this.domainComponent)); | ||
} | ||
return tmp; | ||
return tmp.join("/"); | ||
} | ||
public toString(): string { | ||
// standard for SSL is to have a / in front of each Field | ||
// see https://www.digicert.com/kb/ssl-support/openssl-quick-reference-guide.htm | ||
const t = this.toStringForOPCUA(); | ||
return t ? "/" + t : t; | ||
} | ||
} |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -143,3 +144,3 @@ // | ||
// tslint:disable:no-empty | ||
displayTitle("Create Certificate Authority (CA)", (err?: Error | null) => { /** */ }); | ||
displayTitle("Create Certificate Authority (CA)", (_err?: Error | null) => { /** */ }); | ||
@@ -146,0 +147,0 @@ const indexFileAttr = path.join(caRootDir, "index.txt.attr"); |
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -6,0 +7,0 @@ // |
@@ -0,0 +0,0 @@ export type KeySize = 1024 | 2048 | 3072 | 4096; |
@@ -0,0 +0,0 @@ const config = |
@@ -0,0 +0,0 @@ const config = |
@@ -0,0 +0,0 @@ |
@@ -0,5 +1,7 @@ | ||
/* eslint-disable indent */ | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// node-opcua-pki | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
// Copyright (c) 2014-2021 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2014-2022 - Etienne Rossignon - etienne.rossignon (at) gadz.org | ||
// Copyright (c) 2022 - Sterfive.com | ||
// --------------------------------------------------------------------------------------------------------------------- | ||
@@ -44,3 +46,3 @@ // | ||
export function quote(str: string): string { | ||
return "\"" + str + "\""; | ||
return '"' + str + '"'; | ||
} | ||
@@ -495,3 +497,3 @@ | ||
// process.env.OPENSSL_CONF =""; | ||
const subjectOptions = subject ? " -subj \"" + subject + "\"" : ""; | ||
const subjectOptions = subject ? ' -subj "' + subject + '"' : ""; | ||
async.series( | ||
@@ -670,3 +672,3 @@ [ | ||
* @param params.purpose | ||
* @param [params.subject= "/C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=ZZNodeOPCUA"] | ||
* @param [params.subject= "C=FR/ST=IDF/L=Paris/O=Local NODE-OPCUA Certificate Authority/CN=ZZNodeOPCUA"] | ||
* @param callback | ||
@@ -707,3 +709,3 @@ */ | ||
let subject = new Subject(params.subject); | ||
let subject: Subject | string = new Subject(params.subject); | ||
subject = subject.toString(); | ||
@@ -718,11 +720,11 @@ | ||
switch (params.purpose) { | ||
case CertificatePurpose.ForApplication: | ||
extension = "v3_selfsigned"; | ||
break; | ||
case CertificatePurpose.ForCertificateAuthority: | ||
extension = "v3_ca"; | ||
break; | ||
case CertificatePurpose.ForUserAuthentication: | ||
default: | ||
extension = "v3_selfsigned"; | ||
case CertificatePurpose.ForApplication: | ||
extension = "v3_selfsigned"; | ||
break; | ||
case CertificatePurpose.ForCertificateAuthority: | ||
extension = "v3_ca"; | ||
break; | ||
case CertificatePurpose.ForUserAuthentication: | ||
default: | ||
extension = "v3_selfsigned"; | ||
} | ||
@@ -752,5 +754,5 @@ | ||
q(n(certificateRequestFilename)) + | ||
" -subj \"" + | ||
' -subj "' + | ||
subject + | ||
"\"", | ||
'"', | ||
{}, | ||
@@ -757,0 +759,0 @@ callback |
{ | ||
"name": "node-opcua-pki", | ||
"version": "2.17.0", | ||
"version": "2.18.0", | ||
"description": "PKI management for node-opcua", | ||
@@ -51,4 +51,4 @@ "main": "./dist/index.js", | ||
"cli-table": "^0.3.11", | ||
"minimist": "^1.2.6", | ||
"node-opcua-crypto": "^1.11.0", | ||
"minimist": "^1.2.7", | ||
"node-opcua-crypto": "^1.12.0", | ||
"progress": "^2.0.3", | ||
@@ -62,18 +62,18 @@ "thenify": "^3.3.1", | ||
"@istanbuljs/nyc-config-typescript": "^1.0.2", | ||
"@types/async": "^3.2.13", | ||
"@types/async": "^3.2.15", | ||
"@types/byline": "^4.2.33", | ||
"@types/cli-table": "^0.3.0", | ||
"@types/mocha": "^9.1.1", | ||
"@types/node": "^18.0.0", | ||
"@types/cli-table": "^0.3.1", | ||
"@types/mocha": "^10.0.0", | ||
"@types/node": "^18.11.3", | ||
"@types/node-dir": "0.0.34", | ||
"@types/progress": "^2.0.5", | ||
"@types/rimraf": "^3.0.2", | ||
"@types/sinon": "^10.0.11", | ||
"@types/sinon": "^10.0.13", | ||
"@types/underscore": "^1.11.4", | ||
"@types/yargs": "^17.0.10", | ||
"@types/yargs": "^17.0.13", | ||
"@types/yauzl": "^2.10.0", | ||
"@typescript-eslint/eslint-plugin": "^5.29.0", | ||
"@typescript-eslint/parser": "^5.29.0", | ||
"eslint": "^8.18.0", | ||
"mocha": "^10.0.0", | ||
"@typescript-eslint/eslint-plugin": "^5.40.1", | ||
"@typescript-eslint/parser": "^5.40.1", | ||
"eslint": "^8.25.0", | ||
"mocha": "^10.1.0", | ||
"node-dir": "^0.1.17", | ||
@@ -83,6 +83,6 @@ "nyc": "^15.1.0", | ||
"should": "^13.2.3", | ||
"sinon": "^14.0.0", | ||
"sinon": "^14.0.1", | ||
"source-map-support": "^0.5.21", | ||
"ts-node": "^10.8.1", | ||
"typescript": "^4.7.4" | ||
"ts-node": "^10.9.1", | ||
"typescript": "^4.8.4" | ||
}, | ||
@@ -89,0 +89,0 @@ "bin": { |
@@ -8,18 +8,19 @@ ### node-opcua-pki | ||
## Create a Certificate Authority | ||
``` | ||
PKI\CA Certificate Authority | ||
PKI\rejected The Certificate store contains certificates that have been rejected. | ||
PKI\rejected\certs Contains the X.509 v3 Certificates which have been rejected. | ||
PKI\trusted The Certificate store contains trusted Certificates. | ||
PKI\trusted\certs Contains the X.509 v3 Certificates that are trusted. | ||
PKI\trusted\crl Contains the X.509 v3 CRLs for any Certificates in the ./certs directory. | ||
PKI\issuers The Certificate store contains the CA Certificates needed for validation. | ||
PKI\issuers\certs Contains the X.509 v3 Certificates that are needed for validation. | ||
PKI\issuers\crl Contains the X.509 v3 CRLs for any Certificates in the ./certs directory. | ||
## Installation | ||
##### install globally | ||
``` | ||
$ npm install -g node-opcua-pki | ||
$ crypto_create_CA --help | ||
``` | ||
##### use with npx | ||
``` | ||
npx node-opcua-pki --help | ||
npx node-opcua-pki certificate --help | ||
``` | ||
Note: see https://reference.opcfoundation.org/GDS/docs/F.1/ | ||
@@ -52,2 +53,17 @@ | ||
The result | ||
``` | ||
PKI\CA Certificate Authority | ||
PKI\rejected The Certificate store contains certificates that have been rejected. | ||
PKI\rejected\certs Contains the X.509 v3 Certificates which have been rejected. | ||
PKI\trusted The Certificate store contains trusted Certificates. | ||
PKI\trusted\certs Contains the X.509 v3 Certificates that are trusted. | ||
PKI\trusted\crl Contains the X.509 v3 CRLs for any Certificates in the ./certs directory. | ||
PKI\issuers The Certificate store contains the CA Certificates needed for validation. | ||
PKI\issuers\certs Contains the X.509 v3 Certificates that are needed for validation. | ||
PKI\issuers\crl Contains the X.509 v3 CRLs for any Certificates in the ./certs directory. | ||
``` | ||
## demo command | ||
@@ -125,6 +141,3 @@ | ||
#### note: | ||
- do not upgrade update-notifier above 4.x.x until nodejs 8 is required | ||
#### support: | ||
@@ -131,0 +144,0 @@ |
@@ -0,0 +0,0 @@ { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Native code
Supply chain riskContains native code (e.g., compiled binaries or shared libraries). Including native code can obscure malicious behavior.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
555928
74
8616
157
4
Updatedminimist@^1.2.7
Updatednode-opcua-crypto@^1.12.0