Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/sshpk/lib/formats/x509.js')
-rw-r--r--node_modules/sshpk/lib/formats/x509.js33
1 files changed, 28 insertions, 5 deletions
diff --git a/node_modules/sshpk/lib/formats/x509.js b/node_modules/sshpk/lib/formats/x509.js
index 219953c4e..0144c4449 100644
--- a/node_modules/sshpk/lib/formats/x509.js
+++ b/node_modules/sshpk/lib/formats/x509.js
@@ -203,6 +203,14 @@ function readDate(der) {
}
}
+function writeDate(der, date) {
+ if (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) {
+ der.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime);
+ } else {
+ der.writeString(dateToUTCTime(date), asn1.Ber.UTCTime);
+ }
+}
+
/* RFC5280, section 4.2.1.6 (GeneralName type) */
var ALTNAME = {
OtherName: Local(0),
@@ -242,7 +250,8 @@ function readExtension(cert, buf, der) {
var extId = der.readOID();
var id;
var sig = cert.signatures.x509;
- sig.extras.exts = [];
+ if (!sig.extras.exts)
+ sig.extras.exts = [];
var critical;
if (der.peek() === asn1.Ber.Boolean)
@@ -414,9 +423,11 @@ function gTimeToDate(t) {
return (d);
}
-function zeroPad(n) {
+function zeroPad(n, m) {
+ if (m === undefined)
+ m = 2;
var s = '' + n;
- while (s.length < 2)
+ while (s.length < m)
s = '0' + s;
return (s);
}
@@ -433,6 +444,18 @@ function dateToUTCTime(d) {
return (s);
}
+function dateToGTime(d) {
+ var s = '';
+ s += zeroPad(d.getUTCFullYear(), 4);
+ s += zeroPad(d.getUTCMonth() + 1);
+ s += zeroPad(d.getUTCDate());
+ s += zeroPad(d.getUTCHours());
+ s += zeroPad(d.getUTCMinutes());
+ s += zeroPad(d.getUTCSeconds());
+ s += 'Z';
+ return (s);
+}
+
function sign(cert, key) {
if (cert.signatures.x509 === undefined)
cert.signatures.x509 = {};
@@ -531,8 +554,8 @@ function writeTBSCert(cert, der) {
cert.issuer.toAsn1(der);
der.startSequence();
- der.writeString(dateToUTCTime(cert.validFrom), asn1.Ber.UTCTime);
- der.writeString(dateToUTCTime(cert.validUntil), asn1.Ber.UTCTime);
+ writeDate(der, cert.validFrom);
+ writeDate(der, cert.validUntil);
der.endSequence();
var subject = cert.subjects[0];