Мне нужно разобрать crl (в формате pem), чтобы проверить, какие сертификаты отозваны. Раньше я делал это, используя этот пример, который работал нормально, пока я не перешел на машинопись. Теперь у меня есть
import { fromBER } from 'asn1js';
import { CertificateRevocationList } from 'pkijs';
import fs from'fs';
fs.readFile('./pathToMyCrlFile.crl', (err, crlData) => {
if (err) {
throw err;
}
const buffer = new Uint8Array(crlData).buffer;
const asn1crl = fromBER(buffer);
const crl = new CertificateRevocationList({
schema: asn1crl.result
})
for (const { userCertificate } of crl.revokedCertificates) {
// do something
}
})
И я получаю
Cannot read properties of undefined (reading 'slice'). Stacktrace: TypeError: Cannot read properties of
undefined (reading 'slice') at RelativeDistinguishedNames.fromSchema
(<project_path>/node_modules/pkijs/build/index.js:408:72)
Я проверил PEM, и он действителен. Я не уверен, что делать, и я был бы признателен за любой толчок в правильном направлении. Спасибо заранее!
@akivajgordon фрагмент происходит здесь, внутри модуля pkijs, когда я создаю новый экземпляр CertificateRevocationList.
Итак, видимо, я могу использовать статический метод .fromBER, который является частью CertificateRevocationList. Итак, чтобы обновить код сверху, он должен быть
import { CertificateRevocationList } from 'pkijs';
import fs from'fs';
fs.readFile('./pathToMyCrlFile.crl', (err, crlData) => {
if (err) {
throw err;
}
const bytes = new Uint8Array(crlData);
const crlObject = CertificateRevocationList.fromBER(bytes.buffer);
for (const { userCertificate } of crlObject.revokedCertificates) {
// do something
}
})
Это похоже на ошибку времени выполнения, а не на проблему TypeScript. Можете ли вы поделиться еще немного кода того, как это вызывается? Я не вижу ссылки на slice в связанном ответе, поэтому неясно, каков контекст.