private Certificate[] readCertArray(StrictLineReader reader) throws IOException { int length = reader.readInt(); if (length == -1) { return null; } try { CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); Certificate[] result = new Certificate[length]; for (int i = 0; i < result.length; i++) { String line = reader.readLine(); byte[] bytes = Base64.decode(line.getBytes("US-ASCII")); result[i] = certificateFactory.generateCertificate(new ByteArrayInputStream(bytes)); } return result; } catch (CertificateException e) { throw new IOException(e.getMessage()); } }
private void writeCertArray(Writer writer, Certificate[] certificates) throws IOException { if (certificates == null) { writer.write("-1\n"); return; } try { writer.write(Integer.toString(certificates.length) + '\n'); for (Certificate certificate : certificates) { byte[] bytes = certificate.getEncoded(); String line = Base64.encode(bytes); writer.write(line + '\n'); } } catch (CertificateEncodingException e) { throw new IOException(e.getMessage()); } }
@Override public Uri remapChromeUri(Uri uri) { Uri ret = Uri.parse(replacePatternsInLine(uri.toString())); if (ret.getPath().endsWith(".css") || uri.getPath().equals("manifest.json")) { Uri fileUri = Uri.parse("file:///android_asset/www" + uri.getPath()); fileUri = webView.getResourceApi().remapUri(fileUri); try { OpenForReadResult readResult = webView.getResourceApi().openForRead(fileUri, true); try { byte[] newData = replaceI18nPlaceholders(readResult.inputStream); return Uri.parse("data:text/css;charset=utf-8;base64," + Base64.encode(newData)); } finally { if (readResult != null) { readResult.inputStream.close(); } } } catch (IOException e) { e.printStackTrace(); } } return ret; }