/*! \internal Returns a DER key formatted as PEM. */ QByteArray QSslKeyPrivate::pemFromDer(const QByteArray &der, const QMap<QByteArray, QByteArray> &headers) const { QByteArray pem(der.toBase64()); const int lineWidth = 64; // RFC 1421 const int newLines = pem.size() / lineWidth; const bool rem = pem.size() % lineWidth; // ### optimize for (int i = 0; i < newLines; ++i) pem.insert((i + 1) * lineWidth + i, '\n'); if (rem) pem.append('\n'); // ### QByteArray extra; if (!headers.isEmpty()) { QMap<QByteArray, QByteArray>::const_iterator it = headers.constEnd(); do { --it; extra += it.key() + ": " + it.value() + '\n'; } while (it != headers.constBegin()); extra += '\n'; } pem.prepend(pemHeader() + '\n' + extra); pem.append(pemFooter() + '\n'); return pem; }
/*! \internal Returns a DER key formatted as PEM. */ QByteArray QSslKeyPrivate::pemFromDer(const QByteArray &der) const { QByteArray pem(der.toBase64()); const int lineWidth = 64; // RFC 1421 const int newLines = pem.size() / lineWidth; const bool rem = pem.size() % lineWidth; // ### optimize for (int i = 0; i < newLines; ++i) pem.insert((i + 1) * lineWidth + i, '\n'); if (rem) pem.append('\n'); // ### pem.prepend(pemHeader()); pem.append(pemFooter()); return pem; }