Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
var x509 = [];
for (var i = 0; i < n; i++)
x509[i] = Crypt.X509.decode(certs[i]);
for (var i = 0; i < n - 1; i++) {
var spki = x509[i + 1].spki;
if (!this._verify(spki, x509[i]))
return false;
}
var aki = Crypt.X509.decodeAKI(certs[n - 1]);
if (aki) {
var spki = this.findCert("ca.ski", aki);
if (spki && this._verify(spki, x509[n - 1]))
return true;
// else fall thru
}
var tbs = Crypt.X509.decodeTBS(x509[n - 1].tbs);
var sha1 = new Crypt.SHA1();
var issuer = sha1.process(tbs.issuer);
var spki = this.findCert("ca.subject", issuer);
return spki && this._verify(spki, x509[n - 1]);
};
_verify(spki, x509) {
verify(certs, options) { // @@ support additional certificates
var n = certs.length;
var x509 = [];
for (var i = 0; i < n; i++)
x509[i] = Crypt.X509.decode(certs[i]);
for (var i = 0; i < n - 1; i++) {
var spki = x509[i + 1].spki;
if (!this._verify(spki, x509[i]))
return false;
}
var aki = Crypt.X509.decodeAKI(certs[n - 1]);
if (aki) {
var spki = this.findCert("ca.ski", aki);
if (spki && this._verify(spki, x509[n - 1]))
return true;
// else fall thru
}
var tbs = Crypt.X509.decodeTBS(x509[n - 1].tbs);
var sha1 = new Crypt.SHA1();
var issuer = sha1.process(tbs.issuer);
var spki = this.findCert("ca.subject", issuer);
var crt = Files.read(argv[argi]);
var ski = Crypt.X509.decodeSKI(crt);
if (ski.byteLength > 20) {
trace("SKI too long!\n");
continue;
}
if (ski.byteLength < 20) {
var buf = new Uint8Array(20);
buf.fill(0);
buf.set(new Uint8Array(ski), 20 - ski.byteLength);
ski = buf.buffer;
}
f1.write(ski);
console.log((new Arith.Integer(ski)).toString(16, 40));
var x509 = Crypt.X509.decode(crt);
var tbs = Crypt.X509.decodeTBS(x509.tbs);
sha1.reset();
sha1.update(tbs.subject);
var subject = sha1.close();
f2.write(subject);
}
f1.close();
f2.close();
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import Crypt from "crypt";
import Arith from "arith";
import Files from "files";
import File from "file";
import Bin from "bin";
var argv = process.execArgv();
var f1 = new File("/k2/ca.ski", 1);
var f2 = new File("/k2/ca.subject", 1);
var sha1 = new Crypt.SHA1();
for (var argi = 1, argc = argv.length; argi < argc; argi++) {
var crt = Files.read(argv[argi]);
var ski = Crypt.X509.decodeSKI(crt);
if (ski.byteLength > 20) {
trace("SKI too long!\n");
continue;
}
if (ski.byteLength < 20) {
var buf = new Uint8Array(20);
buf.fill(0);
buf.set(new Uint8Array(ski), 20 - ski.byteLength);
ski = buf.buffer;
}
f1.write(ski);
console.log((new Arith.Integer(ski)).toString(16, 40));
var x509 = Crypt.X509.decode(crt);
var tbs = Crypt.X509.decodeTBS(x509.tbs);
sha1.reset();
sha1.update(tbs.subject);