PeculiarVentures / x509

@peculiar/x509 is an easy to use TypeScript/Javascript library based on @peculiar/asn1-schema that makes generating X.509 Certificates and Certificate Requests as well as validating certificate chains easy

Home Page:https://peculiarventures.github.io/x509/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error: Cannot get schema for 'CertificationRequestInfo' target

titanism opened this issue · comments

This error occurs in asn1-schema/build/cjs/schema.js.

Usage:

async function createCsrs(certs, key) {
  const alg = {
    name: 'RSASSA-PKCS1-v1_5',
    hash: 'SHA-1',
    modulusLength: 2048,
    publicExponent: new Uint8Array([1, 0, 1])
  };
  const commonName =
    key === 'Alerts'
      ? 'com.apple.server.apns.alerts'
      : `com.apple.servermgrd.apns.${key.toLowerCase()}`;
  const csr = await X509.Pkcs10CertificateRequestGenerator.create({
    // TODO: pass `serialNumber` re-using existing if renewal occurring
    // const serialNumber = getCertSerialNumber(certs, key);
    default: 'SHA-1',
    name: `CN=${commonName}`,
    keys: {
      publicKey: certs[key].publicKey,
      privateKey: certs[key].privateKey
    },
    // TODO: country name 'US' <------------ required
    signingAlgorithm: alg,
    extensions: []
  });
  return csr.toString('base64');
}

This only seems to happen in production environments on Ubuntu distros, not locally on macOS environment.

Try to deduplicate dependencies, especially @peculiar/asn1-schema

I got rid of X509.Pkcs10CertificateRequestGenerator.create usage per forwardemail/forwardemail.net@115ab37 and now this issue comes up:

Error: Cannot get schema for 'Certificate' target

Which comes from this invocation:

https://github.com/forwardemail/forwardemail.net/blob/115ab37e5b960e6363108167011b55e1921326d6/helpers/get-apn-certs.js#L113

I'm simply using pnpm to install dependencies.

@microshine Any idea why items is an empty WeakMap?

storage_1.schemaStorage AsnSchemaStorage { items: WeakMap { <items unknown> } }
plain AsnSchemaStorage { items: WeakMap {  } }
items WeakMap {  }
✖  fatal     Cannot get schema for 'Certificate' target

Reproducible case (this works on macOS but not on Ubuntu):

const X509 = require('@peculiar/x509');

const str = `-----BEGIN CERTIFICATE-----
MIIFdDCCBFygAwIBAgIIHHq+Na5RRdAwDQYJKoZIhvcNAQELBQAwgYwxQDA+BgNV
BAMMN0FwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIDIgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9y
aXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0yNDA4MDMx
MDMxMThaFw0yNTA4MDMxMDMxMTdaMIGOMUswSQYKCZImiZPyLGQBAQw7Y29tLmFw
cGxlLm1haWwuWFNlcnZlci4xNTI5ODdjNy1lMDhjLTQ2MzEtODljMy00YTc2NzU2
ZDRlNjkxMjAwBgNVBAMMKUFQU1A6MTUyOTg3YzctZTA4Yy00NjMxLTg5YzMtNGE3
Njc1NmQ0ZTY5MQswCQYDVQQGEwJVUzCCASEwDQYJKoZIhvcNAQEBBQADggEOADCC
AQkCggEAxkw9JZsWZZLMyYDn4xi8+N99yY2BvyISDuQ2EskNWE8AvcuqJEzT7pmD
H0Q3RigSQ5TxP7B+NVwspLK6yU0OnDv/+gcyZ2unOlGpF90TOTxsMJpWX9tE1vP1
JbkZh2N/gv7wJo60Fub0odrtN0uazMxmUgC3zC9vlRNKUujbVZLu4z2CESBj/FX9
cftbzYZ8x08OYsrEtjFLKndj9RwllwhcjyKG6+WWaqOagtr2/+L6K1Kzv5mnonEr
Q7yornoiZiieJz8jlmA4x4cqjebe/JIBSrICYabCOGGSO58dWZHWzw8BEGuAvVFF
y/M3QLeTAKnP6ygk+U5xayb5sqiEowIDAQABo4IB1TCCAdEwCQYDVR0TBAIwADAf
BgNVHSMEGDAWgBT3vnwhYJHbPRt72DoygWnfnmx/mzCCARwGA1UdIASCARMwggEP
MIIBCwYJKoZIhvdjZAUBMIH9MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9u
IHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5j
ZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25k
aXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0
aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDUGCCsGAQUFBwIBFilodHRwOi8vd3d3
LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eTATBgNVHSUEDDAKBggrBgEF
BQcDAjAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY3JsLmFwcGxlLmNvbS9hYWky
Y2EuY3JsMB0GA1UdDgQWBBRTCMB1mzCdm3QlHK55FY120ySUTTALBgNVHQ8EBAMC
B4AwEAYKKoZIhvdjZAYDAgQCBQAwDQYJKoZIhvcNAQELBQADggEBABxnnAhju4Kb
+mgq0PCmQwiXiHF2ZUznxhKixRiin/IPS8Ji7zq5cdckksCYi0crvJSighwrPFwe
/mhVJS4jHY3Q97bXDQfyYWMI5Ig6/Y9jSiVNYMRp6H/WnsRRhyR8VUEjVtakr8r+
EPDZd8aNUgJhqTmnsmNM9NEVNGsvT/0gBQdWLWnjLd7BtAieECvu3qp5lhdoXx/Y
QvwovK0pSNuJViE+40iNmVmFC/gdZv0BhALYGkbJjkTTuA32xPiNyx0UNBIVkyov
Vi+1EjcfB4e8h74t6ffdCn3njIOIIRqnm0VcQeMSNvjzVdEIF6PqimAWkomo/jcF
A3yGjdwM2A4=
-----END CERTIFICATE-----`;

const cert = new X509.X509Certificate(str);

console.log('cert', cert);

Actually, seems like a dependency issue indeed. I purged deps and reinstalled and it works now. Closing.