Разбор списка отзыва сертификатов в nodejs

Мне нужно разобрать 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, и он действителен. Я не уверен, что делать, и я был бы признателен за любой толчок в правильном направлении. Спасибо заранее!

Это похоже на ошибку времени выполнения, а не на проблему TypeScript. Можете ли вы поделиться еще немного кода того, как это вызывается? Я не вижу ссылки на slice в связанном ответе, поэтому неясно, каков контекст.

akivajgordon 10.01.2023 16:19

@akivajgordon фрагмент происходит здесь, внутри модуля pkijs, когда я создаю новый экземпляр CertificateRevocationList.

Alb 10.01.2023 16:48
Принципы SOLID в JavaScript с примерами
Принципы SOLID в JavaScript с примерами
Принцип единой ответственности подразумевает то, что:
Типы привязки данных в Angular
Типы привязки данных в Angular
Привязка данных автоматически поддерживает страницу в актуальном состоянии на основе состояния вашего приложения. Вы используете привязку данных,...
3 паттерна TypeScript, которые я использую в своей повседневной работе
3 паттерна TypeScript, которые я использую в своей повседневной работе
В TypeScript 2.0 в язык был добавлен модификатор readonly.
Мифический Angular - Миф Angular: стили компонентов
Мифический Angular - Миф Angular: стили компонентов
Это очень короткая и интересная для меня тема. В Angular каждый компонент может иметь свои собственные прикрепленные стили. Стили могут находиться в...
Подсказка RxJS [filter, skipWhile]
Подсказка RxJS [filter, skipWhile]
Эта подсказка описывает разницу между операторами filter и skipWhile из библиотеки RxJS .
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
2
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, видимо, я могу использовать статический метод .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
  }
})

Другие вопросы по теме