• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const {
4  ArrayIsArray,
5  ObjectCreate,
6} = primordials;
7
8// Example:
9// C=US\nST=CA\nL=SF\nO=Joyent\nOU=Node.js\nCN=ca1\nemailAddress=ry@clouds.org
10function parseCertString(s) {
11  const out = ObjectCreate(null);
12  for (const part of s.split('\n')) {
13    const sepIndex = part.indexOf('=');
14    if (sepIndex > 0) {
15      const key = part.slice(0, sepIndex);
16      const value = part.slice(sepIndex + 1);
17      if (key in out) {
18        if (!ArrayIsArray(out[key])) {
19          out[key] = [out[key]];
20        }
21        out[key].push(value);
22      } else {
23        out[key] = value;
24      }
25    }
26  }
27  return out;
28}
29
30module.exports = {
31  parseCertString
32};
33