/** * Return the number of bytes or characters required to contain the * passed in object if it is PEM encoded. * * @param obj pem object to be output * @return an estimate of the number of bytes */ public int GetOutputSize(PemObject obj) { // BEGIN and END boundaries. int size = (2 * (obj.Type.Length + 10 + nlLength)) + 6 + 4; if (obj.Headers.Count > 0) { foreach (PemHeader header in obj.Headers) { size += header.Name.Length + ": ".Length + header.Value.Length + nlLength; } size += nlLength; } // base64 encoding int dataLen = ((obj.Content.Length + 2) / 3) * 4; size += dataLen + (((dataLen + LineLength - 1) / LineLength) * nlLength); return size; }