fixPem static method

String fixPem(
  1. String pem
)

Trys to fix the given pem string.

  • Removes whitespaces
  • Removes linebreaks
  • Removes none base64 characters
  • Chunks the base64 string in multiple strings with length 64

Implementation

static String fixPem(String pem) {
  var tmp = '';
  var begin = '';
  var end = '';

  tmp = pem;

  if (tmp.startsWith(BEGIN_CERT)) {
    tmp = tmp.replaceAll(BEGIN_CERT, '');
    begin = BEGIN_CERT;
  } else if (tmp.startsWith(BEGIN_CRL)) {
    tmp = tmp.replaceAll(BEGIN_CRL, '');
    begin = BEGIN_CRL;
  } else if (tmp.startsWith(BEGIN_CSR)) {
    tmp = tmp.replaceAll(BEGIN_CSR, '');
    begin = BEGIN_CSR;
  } else if (tmp.startsWith(BEGIN_EC_PRIVATE_KEY)) {
    tmp = tmp.replaceAll(BEGIN_EC_PRIVATE_KEY, '');
    begin = BEGIN_EC_PRIVATE_KEY;
  } else if (tmp.startsWith(BEGIN_EC_PUBLIC_KEY)) {
    tmp = tmp.replaceAll(BEGIN_EC_PUBLIC_KEY, '');
    begin = BEGIN_EC_PUBLIC_KEY;
  } else if (tmp.startsWith(BEGIN_NEW_CSR)) {
    tmp = tmp.replaceAll(BEGIN_NEW_CSR, '');
    begin = BEGIN_NEW_CSR;
  } else if (tmp.startsWith(BEGIN_PKCS7)) {
    tmp = tmp.replaceAll(BEGIN_PKCS7, '');
    begin = BEGIN_PKCS7;
  } else if (tmp.startsWith(BEGIN_PRIVATE_KEY)) {
    tmp = tmp.replaceAll(BEGIN_PRIVATE_KEY, '');
    begin = BEGIN_PRIVATE_KEY;
  } else if (tmp.startsWith(BEGIN_PUBLIC_KEY)) {
    tmp = tmp.replaceAll(BEGIN_PUBLIC_KEY, '');
    begin = BEGIN_PUBLIC_KEY;
  }

  if (tmp.endsWith(END_CERT)) {
    tmp = tmp.replaceAll(END_CERT, '');
    end = END_CERT;
  } else if (tmp.endsWith(END_CRL)) {
    tmp = tmp.replaceAll(END_CRL, '');
    end = END_CRL;
  } else if (tmp.endsWith(END_CSR)) {
    tmp = tmp.replaceAll(END_CSR, '');
    end = END_CSR;
  } else if (tmp.endsWith(END_EC_PRIVATE_KEY)) {
    tmp = tmp.replaceAll(END_EC_PRIVATE_KEY, '');
    end = END_EC_PRIVATE_KEY;
  } else if (tmp.endsWith(END_EC_PUBLIC_KEY)) {
    tmp = tmp.replaceAll(END_EC_PUBLIC_KEY, '');
    end = END_EC_PUBLIC_KEY;
  } else if (tmp.endsWith(END_NEW_CSR)) {
    tmp = tmp.replaceAll(END_NEW_CSR, '');
    end = END_NEW_CSR;
  } else if (tmp.endsWith(END_PKCS7)) {
    tmp = tmp.replaceAll(END_PKCS7, '');
    end = END_PKCS7;
  } else if (tmp.endsWith(END_PRIVATE_KEY)) {
    tmp = tmp.replaceAll(END_PRIVATE_KEY, '');
    end = END_PRIVATE_KEY;
  } else if (tmp.endsWith(END_PUBLIC_KEY)) {
    tmp = tmp.replaceAll(END_PUBLIC_KEY, '');
    end = END_PUBLIC_KEY;
  }

  tmp = tmp.replaceAll(' ', '');
  tmp = tmp.replaceAll('\n', '');
  tmp = tmp.replaceAll('\r\n', '');
  tmp = tmp.replaceAll('\r', '');
  tmp = tmp.replaceAll('\t', '');
  var sb = StringBuffer();
  var regex = RegExp('^[A-Za-z0-9+\/=]\$');
  tmp.codeUnits.forEach((element) {
    var s = String.fromCharCode(element);
    if (regex.hasMatch(s)) {
      sb.write(s);
    }
  });

  tmp = formatKeyString(sb.toString(), begin, end);
  return tmp;
}