Java 类java.nio.charset.Charsets 实例源码

项目:In-the-Box-Fork    文件:String.java   
/**
 * Returns a new byte array containing the characters of this string encoded using the
 * given charset.
 *
 * <p>The behavior when this string cannot be represented in the given charset
 * is to replace malformed input and unmappable characters with the charset's default
 * replacement byte array. Use {@link java.nio.charset.CharsetEncoder} for more control.
 *
 * @since 1.6
 */
public byte[] getBytes(Charset charset) {
    String canonicalCharsetName = charset.name();
    if (canonicalCharsetName.equals("UTF-8")) {
        return Charsets.toUtf8Bytes(value, offset, count);
    } else if (canonicalCharsetName.equals("ISO-8859-1")) {
        return Charsets.toIsoLatin1Bytes(value, offset, count);
    } else if (canonicalCharsetName.equals("US-ASCII")) {
        return Charsets.toAsciiBytes(value, offset, count);
    } else {
        CharBuffer chars = CharBuffer.wrap(this.value, this.offset, this.count);
        ByteBuffer buffer = charset.encode(chars.asReadOnlyBuffer());
        byte[] bytes = new byte[buffer.limit()];
        buffer.get(bytes);
        return bytes;
    }
}
项目:In-the-Box-Fork    文件:AbstractPreferences.java   
@Override
public byte[] getByteArray(String key, byte[] deflt) {
    String svalue = get(key, null);
    if (svalue == null) {
        return deflt;
    }
    if (svalue.length() == 0) {
        return new byte[0];
    }
    try {
        byte[] bavalue = svalue.getBytes(Charsets.US_ASCII);
        if (bavalue.length % 4 != 0) {
            return deflt;
        }
        return Base64.decode(bavalue);
    } catch (Exception e) {
        return deflt;
    }
}
项目:In-the-Box-Fork    文件:URIEncoderDecoder.java   
/**
 * All characters except letters ('a'..'z', 'A'..'Z') and numbers ('0'..'9')
 * and legal characters are converted into their hexidecimal value prepended
 * by '%'.
 * <p>
 * For example: '#' -> %23
 * Other characters, which are unicode chars that are not US-ASCII, and are
 * not ISO Control or are not ISO Space chars, are preserved.
 * <p>
 * Called from {@code URI.quoteComponent()} (for multiple argument
 * constructors)
 *
 * @param s
 *            java.lang.String the string to be converted
 * @param legal
 *            java.lang.String the characters allowed to be preserved in the
 *            string s
 * @return java.lang.String the converted string
 */
static String quoteIllegal(String s, String legal)
        throws UnsupportedEncodingException {
    StringBuilder buf = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        if ((ch >= 'a' && ch <= 'z')
                || (ch >= 'A' && ch <= 'Z')
                || (ch >= '0' && ch <= '9')
                || legal.indexOf(ch) > -1
                || (ch > 127 && !Character.isSpaceChar(ch) && !Character
                        .isISOControl(ch))) {
            buf.append(ch);
        } else {
            byte[] bytes = new String(new char[] { ch }).getBytes(Charsets.UTF_8);
            for (int j = 0; j < bytes.length; j++) {
                buf.append('%');
                buf.append(digits.charAt((bytes[j] & 0xf0) >> 4));
                buf.append(digits.charAt(bytes[j] & 0xf));
            }
        }
    }
    return buf.toString();
}
项目:In-the-Box-Fork    文件:URIEncoderDecoder.java   
/**
 * Other characters, which are Unicode chars that are not US-ASCII, and are
 * not ISO Control or are not ISO Space chars are not preserved. They are
 * converted into their hexidecimal value prepended by '%'.
 * <p>
 * For example: Euro currency symbol -> "%E2%82%AC".
 * <p>
 * Called from URI.toASCIIString()
 *
 * @param s
 *            java.lang.String the string to be converted
 * @return java.lang.String the converted string
 */
static String encodeOthers(String s) throws UnsupportedEncodingException {
    StringBuilder buf = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        if (ch <= 127) {
            buf.append(ch);
        } else {
            byte[] bytes = new String(new char[] { ch }).getBytes(Charsets.UTF_8);
            for (int j = 0; j < bytes.length; j++) {
                buf.append('%');
                buf.append(digits.charAt((bytes[j] & 0xf0) >> 4));
                buf.append(digits.charAt(bytes[j] & 0xf));
            }
        }
    }
    return buf.toString();
}
项目:In-the-Box-Fork    文件:AttributeTypeAndValue.java   
public void setEncodingContent(BerOutputStream out) {

            AttributeValue av = (AttributeValue) out.content;

            if (av.encoded != null) {
                out.length = av.encoded.length;
            } else {

                if (av.getTag() == ASN1Constants.TAG_UTF8STRING) {

                    out.content = av.rawString;

                    ASN1StringType.UTF8STRING.setEncodingContent(out);

                    av.bytes = (byte[]) out.content;
                    out.content = av;
                } else {
                    av.bytes = av.rawString.getBytes(Charsets.UTF_8);
                    out.length = av.bytes.length;
                }
            }
        }
项目:In-the-Box-Fork    文件:ASN1GeneralizedTime.java   
public void setEncodingContent(BerOutputStream out) {

        SimpleDateFormat sdf = new SimpleDateFormat(GEN_PATTERN);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String temp = sdf.format(out.content);
        // cut off trailing 0s
        int nullId;
        int currLength;
        while (((nullId = temp.lastIndexOf('0', currLength = temp.length() - 1)) != -1)
                & (nullId == currLength)) {
            temp = temp.substring(0, nullId);
        }
        // deal with point (cut off if it is last char)
        if (temp.charAt(currLength) == '.') {
            temp = temp.substring(0, currLength);
        }

        out.content = (temp + "Z").getBytes(Charsets.UTF_8);
        out.length = ((byte[]) out.content).length;
    }
项目:In-the-Box-Fork    文件:HttpURLConnectionImpl.java   
/**
 * Prepares the HTTP headers and sends them to the server.
 *
 * <p>For streaming requests with a body, headers must be prepared
 * <strong>before</strong> the output stream has been written to. Otherwise
 * the body would need to be buffered!
 *
 * <p>For non-streaming requests with a body, headers must be prepared
 * <strong>after</strong> the output stream has been written to and closed.
 * This ensures that the {@code Content-Length} header receives the proper
 * value.
 */
private void writeRequestHeaders(OutputStream out) throws IOException {
    Header header = prepareRequestHeaders();

    StringBuilder result = new StringBuilder(256);
    result.append(header.getStatusLine()).append("\r\n");
    for (int i = 0; i < header.length(); i++) {
        String key = header.getKey(i);
        String value = header.get(i);
        if (key != null) {
            result.append(key).append(": ").append(value).append("\r\n");
        }
    }
    result.append("\r\n");
    out.write(result.toString().getBytes(Charsets.ISO_8859_1));
    sentRequestHeaders = true;
}
项目:effective_android_sample    文件:NdefRecord.java   
/**
 * Create a new NDEF Record containing a URI.<p>
 * Use this method to encode a URI (or URL) into an NDEF Record.<p>
 * Uses the well known URI type representation: {@link #TNF_WELL_KNOWN}
 * and {@link #RTD_URI}. This is the most efficient encoding
 * of a URI into NDEF.<p>
 * The uri parameter will be normalized with
 * {@link Uri#normalizeScheme} to set the scheme to lower case to
 * follow Android best practices for intent filtering.
 * However the unchecked exception
 * {@link IllegalArgumentException} may be thrown if the uri
 * parameter has serious problems, for example if it is empty, so always
 * catch this exception if you are passing user-generated data into this
 * method.<p>
 *
 * Reference specification: NFCForum-TS-RTD_URI_1.0
 *
 * @param uri URI to encode.
 * @return an NDEF Record containing the URI
 * @throws IllegalArugmentException if the uri is empty or invalid
 */
public static NdefRecord createUri(Uri uri) {
    if (uri == null) throw new NullPointerException("uri is null");

    uri = uri.normalizeScheme();
    String uriString = uri.toString();
    if (uriString.length() == 0) throw new IllegalArgumentException("uri is empty");

    byte prefix = 0;
    for (int i = 1; i < URI_PREFIX_MAP.length; i++) {
        if (uriString.startsWith(URI_PREFIX_MAP[i])) {
            prefix = (byte) i;
            uriString = uriString.substring(URI_PREFIX_MAP[i].length());
            break;
        }
    }
    byte[] uriBytes = uriString.getBytes(Charsets.UTF_8);
    byte[] recordBytes = new byte[uriBytes.length + 1];
    recordBytes[0] = prefix;
    System.arraycopy(uriBytes, 0, recordBytes, 1, uriBytes.length);
    return new NdefRecord(TNF_WELL_KNOWN, RTD_URI, null, recordBytes);
}
项目:effective_android_sample    文件:NdefRecord.java   
/**
 * Return complete URI of {@link #TNF_WELL_KNOWN}, {@link #RTD_URI} records.
 * @return complete URI, or null if invalid
 */
private Uri parseWktUri() {
    if (mPayload.length < 2) {
        return null;
    }

    // payload[0] contains the URI Identifier Code, as per
    // NFC Forum "URI Record Type Definition" section 3.2.2.
    int prefixIndex = (mPayload[0] & (byte)0xFF);
    if (prefixIndex < 0 || prefixIndex >= URI_PREFIX_MAP.length) {
        return null;
    }
    String prefix = URI_PREFIX_MAP[prefixIndex];
    String suffix = new String(Arrays.copyOfRange(mPayload, 1, mPayload.length),
            Charsets.UTF_8);
    return Uri.parse(prefix + suffix);
}
项目:In-the-Box-Fork    文件:Runtime.java   
public ReaderInputStream(InputStream stream, String encoding) {
    try {
        reader = new InputStreamReader(stream, Charsets.UTF_8);
        writer = new OutputStreamWriter(out, encoding);
    } catch (UnsupportedEncodingException e) {
        // Should never happen, since UTF-8 and platform encoding must be
        // supported.
        throw new RuntimeException(e);
    }
}
项目:In-the-Box-Fork    文件:InitManifest.java   
private void readName() throws IOException {
    int i = 0;
    int mark = pos;

    while (pos < buf.length) {
        byte b = buf[pos++];

        if (b == ':') {
            byte[] nameBuffer = Arrays.copyOfRange(buf, mark, pos - 1);

            if (buf[pos++] != ' ') {
                String name = new String(nameBuffer, Charsets.UTF_8);
                throw new IOException(String.format("Invalid value for attribute '%s'", name));
            }

            name = new Attributes.Name(nameBuffer);
            return;
        }

        if (!((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_'
                || b == '-' || (b >= '0' && b <= '9'))) {
            throw new IOException("Invalid byte " + b + " in attribute");
        }
    }
    if (i > 0) {
        throw new IOException("Invalid attribute name: " +
                Arrays.toString(Arrays.copyOfRange(buf, mark, buf.length)));
    }
}
项目:In-the-Box-Fork    文件:InitManifest.java   
private void readValue() throws IOException {
    boolean lastCr = false;
    int mark = pos;
    int last = pos;
    valueBuffer.rewind();
    while (pos < buf.length) {
        byte next = buf[pos++];
        switch (next) {
        case 0:
            throw new IOException("NUL character in a manifest");
        case '\n':
            if (lastCr) {
                lastCr = false;
            } else {
                consecutiveLineBreaks++;
            }
            continue;
        case '\r':
            lastCr = true;
            consecutiveLineBreaks++;
            continue;
        case ' ':
            if (consecutiveLineBreaks == 1) {
                valueBuffer.write(buf, mark, last - mark);
                mark = pos;
                consecutiveLineBreaks = 0;
                continue;
            }
        }

        if (consecutiveLineBreaks >= 1) {
            pos--;
            break;
        }
        last = pos;
    }

    valueBuffer.write(buf, mark, last - mark);
    value = valueBuffer.toString(Charsets.UTF_8);
}
项目:In-the-Box-Fork    文件:JarVerifier.java   
private boolean verify(Attributes attributes, String entry, byte[] data,
        int start, int end, boolean ignoreSecondEndline, boolean ignorable) {
    String algorithms = attributes.getValue("Digest-Algorithms");
    if (algorithms == null) {
        algorithms = "SHA SHA1";
    }
    StringTokenizer tokens = new StringTokenizer(algorithms);
    while (tokens.hasMoreTokens()) {
        String algorithm = tokens.nextToken();
        String hash = attributes.getValue(algorithm + entry);
        if (hash == null) {
            continue;
        }

        MessageDigest md;
        try {
            md = MessageDigest.getInstance(algorithm);
        } catch (NoSuchAlgorithmException e) {
            continue;
        }
        if (ignoreSecondEndline && data[end - 1] == '\n'
                && data[end - 2] == '\n') {
            md.update(data, start, end - 1 - start);
        } else {
            md.update(data, start, end - start);
        }
        byte[] b = md.digest();
        byte[] hashBytes = hash.getBytes(Charsets.ISO_8859_1);
        return MessageDigest.isEqual(b, Base64.decode(hashBytes));
    }
    return ignorable;
}
项目:In-the-Box-Fork    文件:GeneralName.java   
/**
 * Checks the correctness of the string representation of DNS name.
 * The correctness is checked as specified in RFC 1034 p. 10, and modified
 * by RFC 1123 (section 2.1).
 */
public static void checkDNS(String dns) throws IOException {
    byte[] bytes = dns.toLowerCase().getBytes(Charsets.UTF_8);
    // indicates if it is a first letter of the label
    boolean first_letter = true;
    for (int i=0; i<bytes.length; i++) {
        byte ch = bytes[i];
        if (first_letter) {
            if ((bytes.length > 2) && (ch == '*') && (bytes[1] == '.')) {
                first_letter = false;
                continue;
            }
            if ((ch > 'z' || ch < 'a') && (ch < '0' || ch > '9')) {
                throw new IOException("DNS name must start with a letter: " + dns);
            }
            first_letter = false;
            continue;
        }
        if (!((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')
                || (ch == '-') || (ch == '.'))) {
            throw new IOException("Incorrect DNS name: " + dns);
        }
        if (ch == '.') {
            // check the end of the previous label, it should not
            // be '-' sign
            if (bytes[i-1] == '-') {
                throw new IOException("Incorrect DNS name: label ends with '-': " + dns);
            }
            first_letter = true;
        }
    }
}
项目:In-the-Box-Fork    文件:GeneralName.java   
/**
 * Converts OID into array of bytes.
 */
public static int[] oidStrToInts(String oid) throws IOException {
    byte[] bytes = oid.getBytes(Charsets.UTF_8);
    if (bytes[bytes.length-1] == '.') {
        throw new IOException("Bad OID: " + oid);
    }
    int[] result = new int[bytes.length/2+1]; // best case: a.b.c.d.e
    int number = 0; // the number of OID's components
    for (int i=0; i<bytes.length; i++) {
        int value = 0;
        int pos = i;
        while ((i < bytes.length) && (bytes[i] >= '0')
                    && (bytes[i] <= '9')) {
            value = 10 * value + (bytes[i++] - 48);
        }
        if (i == pos) {
            // the number was not read
            throw new IOException("Bad OID: " + oid);
        }
        result[number++] = value;
        if (i >= bytes.length) {
            break;
        }
        if (bytes[i] != '.') {
            throw new IOException("Bad OID: " + oid);
        }
    }
    if (number < 2) {
        throw new IOException("OID should consist of no less than 2 components: " + oid);
    }
    int[] res = new int[number];
    for (int i=0; i<number; i++) {
        res[i] = result[i];
    }
    return res;
}
项目:In-the-Box-Fork    文件:ZoneInfoDB.java   
/**
 * Reads the file indicating the database version in use.  If the file is not
 * present or is unreadable, we assume a version of "2007h".
 */
private static String readVersion() {
    RandomAccessFile versionFile = null;
    try {
        versionFile = new RandomAccessFile(ZONE_DIRECTORY_NAME + "zoneinfo.version", "r");
        byte[] buf = new byte[(int) versionFile.length()];
        versionFile.readFully(buf);
        return new String(buf, 0, buf.length, Charsets.ISO_8859_1).trim();
    } catch (IOException ex) {
        throw new RuntimeException(ex);
    } finally {
        IoUtils.closeQuietly(versionFile);
    }
}
项目:In-the-Box-Fork    文件:ZoneInfo.java   
private static String nullName(byte[] bytes, int begin) {
    if (begin < 0) {
        return null;
    }
    int end = begin;
    while (end < bytes.length && bytes[end] != 0) {
        ++end;
    }
    return new String(bytes, begin, end - begin, Charsets.US_ASCII);
}
项目:In-the-Box-Fork    文件:FtpURLConnection.java   
private int getReply() throws IOException {
    byte[] code = new byte[3];
    for (int i = 0; i < code.length; i++) {
        final int tmp = ctrlInput.read();
        if (tmp == -1) {
            throw new EOFException();
        }
        code[i] = (byte) tmp;
    }
    replyCode = new String(code, 0, code.length, Charsets.ISO_8859_1);

    boolean multiline = false;
    if (ctrlInput.read() == '-') {
        multiline = true;
    }
    readLine(); /* Skip the rest of the first line */
    if (multiline) {
        while (readMultiLine()) {/* Read all of a multiline reply */
        }
    }

    try {
        return Integer.parseInt(replyCode);
    } catch (NumberFormatException e) {
        throw (IOException)(new IOException("reply code is invalid").initCause(e));
    }
}
项目:In-the-Box-Fork    文件:HttpURLConnectionImpl.java   
/**
 * Returns the authorization credentials on the base of provided challenge.
 */
private String getAuthorizationCredentials(String challenge) throws IOException {
    int idx = challenge.indexOf(" ");
    if (idx == -1) {
        return null;
    }
    String scheme = challenge.substring(0, idx);
    int realm = challenge.indexOf("realm=\"") + 7;
    String prompt = null;
    if (realm != -1) {
        int end = challenge.indexOf('"', realm);
        if (end != -1) {
            prompt = challenge.substring(realm, end);
        }
    }
    // use the global authenticator to get the password
    PasswordAuthentication pa = Authenticator.requestPasswordAuthentication(
            getConnectToInetAddress(), getConnectToPort(), url.getProtocol(), prompt, scheme);
    if (pa == null) {
        return null;
    }
    // base64 encode the username and password
    String usernameAndPassword = pa.getUserName() + ":" + new String(pa.getPassword());
    byte[] bytes = usernameAndPassword.getBytes(Charsets.ISO_8859_1);
    String encoded = Base64.encode(bytes, Charsets.ISO_8859_1);
    return scheme + " " + encoded;
}
项目:In-the-Box-Fork    文件:Socks4Message.java   
/**
 * Get a String from the buffer at the offset given. The method reads until
 * it encounters a null value or reaches the maxLength given.
 */
private String getString(int offset, int maxLength) {
    int index = offset;
    int lastIndex = index + maxLength;
    while (index < lastIndex && (buffer[index] != 0)) {
        index++;
    }
    return new String(buffer, offset, index - offset, Charsets.ISO_8859_1);
}
项目:In-the-Box-Fork    文件:Socks4Message.java   
/**
 * Put a string into the buffer at the offset given.
 */
private void setString(int offset, int maxLength, String theString) {
    byte[] stringBytes = theString.getBytes(Charsets.ISO_8859_1);
    int length = Math.min(stringBytes.length, maxLength);
    System.arraycopy(stringBytes, 0, buffer, offset, length);
    buffer[offset + length] = 0;
}
项目:In-the-Box-Fork    文件:ZipEntry.java   
ZipEntry(LittleEndianReader ler, InputStream in) throws IOException {

        /*
         * We're seeing performance issues when we call readShortLE and
         * readIntLE, so we're going to read the entire header at once
         * and then parse the results out without using any function calls.
         * Uglier, but should be much faster.
         *
         * Note that some lines look a bit different, because the corresponding
         * fields or locals are long and so we need to do & 0xffffffffl to avoid
         * problems induced by sign extension.
         */

        byte[] hdrBuf = ler.hdrBuf;
        myReadFully(in, hdrBuf);

        long sig = (hdrBuf[0] & 0xff) | ((hdrBuf[1] & 0xff) << 8) |
            ((hdrBuf[2] & 0xff) << 16) | ((hdrBuf[3] << 24) & 0xffffffffL);
        if (sig != CENSIG) {
             throw new ZipException("Central Directory Entry not found");
        }

        compressionMethod = (hdrBuf[10] & 0xff) | ((hdrBuf[11] & 0xff) << 8);
        time = (hdrBuf[12] & 0xff) | ((hdrBuf[13] & 0xff) << 8);
        modDate = (hdrBuf[14] & 0xff) | ((hdrBuf[15] & 0xff) << 8);
        crc = (hdrBuf[16] & 0xff) | ((hdrBuf[17] & 0xff) << 8)
                | ((hdrBuf[18] & 0xff) << 16)
                | ((hdrBuf[19] << 24) & 0xffffffffL);
        compressedSize = (hdrBuf[20] & 0xff) | ((hdrBuf[21] & 0xff) << 8)
                | ((hdrBuf[22] & 0xff) << 16)
                | ((hdrBuf[23] << 24) & 0xffffffffL);
        size = (hdrBuf[24] & 0xff) | ((hdrBuf[25] & 0xff) << 8)
                | ((hdrBuf[26] & 0xff) << 16)
                | ((hdrBuf[27] << 24) & 0xffffffffL);
        nameLen = (hdrBuf[28] & 0xff) | ((hdrBuf[29] & 0xff) << 8);
        int extraLen = (hdrBuf[30] & 0xff) | ((hdrBuf[31] & 0xff) << 8);
        int commentLen = (hdrBuf[32] & 0xff) | ((hdrBuf[33] & 0xff) << 8);
        mLocalHeaderRelOffset = (hdrBuf[42] & 0xff) | ((hdrBuf[43] & 0xff) << 8)
                | ((hdrBuf[44] & 0xff) << 16)
                | ((hdrBuf[45] << 24) & 0xffffffffL);

        byte[] nameBytes = new byte[nameLen];
        myReadFully(in, nameBytes);

        byte[] commentBytes = null;
        if (commentLen > 0) {
            commentBytes = new byte[commentLen];
            myReadFully(in, commentBytes);
        }

        if (extraLen > 0) {
            extra = new byte[extraLen];
            myReadFully(in, extra);
        }

        // The RI has always assumed UTF-8. (If GPBF_UTF8_FLAG isn't set, the encoding is
        // actually IBM-437.)
        name = new String(nameBytes, 0, nameBytes.length, Charsets.UTF_8);
        if (commentBytes != null) {
            comment = new String(commentBytes, 0, commentBytes.length, Charsets.UTF_8);
        } else {
            comment = null;
        }
    }
项目:In-the-Box-Fork    文件:JarVerifier.java   
/**
 * Invoked for each new JAR entry read operation from the input
 * stream. This method constructs and returns a new {@link VerifierEntry}
 * which contains the certificates used to sign the entry and its hash value
 * as specified in the JAR MANIFEST format.
 *
 * @param name
 *            the name of an entry in a JAR file which is <b>not</b> in the
 *            {@code META-INF} directory.
 * @return a new instance of {@link VerifierEntry} which can be used by
 *         callers as an {@link OutputStream}.
 */
VerifierEntry initEntry(String name) {
    // If no manifest is present by the time an entry is found,
    // verification cannot occur. If no signature files have
    // been found, do not verify.
    if (man == null || signatures.size() == 0) {
        return null;
    }

    Attributes attributes = man.getAttributes(name);
    // entry has no digest
    if (attributes == null) {
        return null;
    }

    Vector<Certificate> certs = new Vector<Certificate>();
    Iterator<Map.Entry<String, HashMap<String, Attributes>>> it = signatures
            .entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry<String, HashMap<String, Attributes>> entry = it.next();
        HashMap<String, Attributes> hm = entry.getValue();
        if (hm.get(name) != null) {
            // Found an entry for entry name in .SF file
            String signatureFile = entry.getKey();

            Vector<Certificate> newCerts = getSignerCertificates(
                    signatureFile, certificates);
            Iterator<Certificate> iter = newCerts.iterator();
            while (iter.hasNext()) {
                certs.add(iter.next());
            }
        }
    }

    // entry is not signed
    if (certs.size() == 0) {
        return null;
    }
    Certificate[] certificatesArray = new Certificate[certs.size()];
    certs.toArray(certificatesArray);

    String algorithms = attributes.getValue("Digest-Algorithms");
    if (algorithms == null) {
        algorithms = "SHA SHA1";
    }
    StringTokenizer tokens = new StringTokenizer(algorithms);
    while (tokens.hasMoreTokens()) {
        String algorithm = tokens.nextToken();
        String hash = attributes.getValue(algorithm + "-Digest");
        if (hash == null) {
            continue;
        }
        byte[] hashBytes = hash.getBytes(Charsets.ISO_8859_1);

        try {
            return new VerifierEntry(name, MessageDigest
                    .getInstance(algorithm), hashBytes, certificatesArray);
        } catch (NoSuchAlgorithmException e) {
            // ignored
        }
    }
    return null;
}
项目:In-the-Box-Fork    文件:AbstractPreferences.java   
@Override
public void putByteArray(String key, byte[] value) {
    put(key, Base64.encode(value, Charsets.US_ASCII));
}
项目:In-the-Box-Fork    文件:ASN1UTCTime.java   
public void setEncodingContent(BerOutputStream out) {
    SimpleDateFormat sdf = new SimpleDateFormat(UTC_PATTERN);
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    out.content = sdf.format(out.content).getBytes(Charsets.UTF_8);
    out.length = ((byte[]) out.content).length;
}
项目:In-the-Box-Fork    文件:ASN1StringType.java   
public Object getDecodedObject(BerInputStream in) throws IOException {
    return new String(in.buffer, in.contentOffset, in.length, Charsets.UTF_8);
}
项目:In-the-Box-Fork    文件:ASN1StringType.java   
public void setEncodingContent(BerOutputStream out) {
    byte[] bytes = ((String) out.content).getBytes(Charsets.UTF_8);
    out.content = bytes;
    out.length = bytes.length;
}
项目:In-the-Box-Fork    文件:ASN1StringType.java   
public void setEncodingContent(BerOutputStream out) {
    byte[] bytes = ((String) out.content).getBytes(Charsets.UTF_8);
    out.content = bytes;
    out.length = bytes.length;
}
项目:In-the-Box-Fork    文件:FtpURLConnection.java   
private void write(String command) throws IOException {
    ctrlOutput.write(command.getBytes(Charsets.ISO_8859_1));
}
项目:In-the-Box-Fork    文件:ThreadLocalCache.java   
protected CharsetDecoder initialValue() {
    return Charsets.UTF_8.newDecoder();
}
项目:In-the-Box-Fork    文件:ThreadLocalCache.java   
protected CharsetEncoder initialValue() {
    return Charsets.UTF_8.newEncoder();
}
项目:effective_android_sample    文件:NdefRecord.java   
/**
 * Create a new NDEF Record containing MIME data.<p>
 * Use this method to encode MIME-typed data into an NDEF Record,
 * such as "text/plain", or "image/jpeg".<p>
 * The mimeType parameter will be normalized with
 * {@link Intent#normalizeMimeType} to follow Android best
 * practices for intent filtering, for example to force lower-case.
 * However the unchecked exception
 * {@link IllegalArgumentException} may be thrown
 * if the mimeType parameter has serious problems,
 * for example if it is empty, so always catch this
 * exception if you are passing user-generated data into this method.
 * <p>
 * For efficiency, This method might not make an internal copy of the
 * mimeData byte array, so take care not
 * to modify the mimeData byte array while still using the returned
 * NdefRecord.
 *
 * @param mimeType a valid MIME type
 * @param mimeData MIME data as bytes
 * @return an NDEF Record containing the MIME-typed data
 * @throws IllegalArugmentException if the mimeType is empty or invalid
 *
 */
public static NdefRecord createMime(String mimeType, byte[] mimeData) {
    if (mimeType == null) throw new NullPointerException("mimeType is null");

    // We only do basic MIME type validation: trying to follow the
    // RFCs strictly only ends in tears, since there are lots of MIME
    // types in common use that are not strictly valid as per RFC rules
    mimeType = Intent.normalizeMimeType(mimeType);
    if (mimeType.length() == 0) throw new IllegalArgumentException("mimeType is empty");
    int slashIndex = mimeType.indexOf('/');
    if (slashIndex == 0) throw new IllegalArgumentException("mimeType must have major type");
    if (slashIndex == mimeType.length() - 1) {
        throw new IllegalArgumentException("mimeType must have minor type");
    }
    // missing '/' is allowed

    // MIME RFCs suggest ASCII encoding for content-type
    byte[] typeBytes = mimeType.getBytes(Charsets.US_ASCII);
    return new NdefRecord(TNF_MIME_MEDIA, typeBytes, null, mimeData);
}
项目:effective_android_sample    文件:NdefRecord.java   
/**
 * Create a new NDEF Record containing external (application-specific) data.<p>
 * Use this method to encode application specific data into an NDEF Record.
 * The data is typed by a domain name (usually your Android package name) and
 * a domain-specific type. This data is packaged into a "NFC Forum External
 * Type" NDEF Record.<p>
 * NFC Forum requires that the domain and type used in an external record
 * are treated as case insensitive, however Android intent filtering is
 * always case sensitive. So this method will force the domain and type to
 * lower-case before creating the NDEF Record.<p>
 * The unchecked exception {@link IllegalArgumentException} will be thrown
 * if the domain and type have serious problems, for example if either field
 * is empty, so always catch this
 * exception if you are passing user-generated data into this method.<p>
 * There are no such restrictions on the payload data.<p>
 * For efficiency, This method might not make an internal copy of the
 * data byte array, so take care not
 * to modify the data byte array while still using the returned
 * NdefRecord.
 *
 * Reference specification: NFCForum-TS-RTD_1.0
 * @param domain domain-name of issuing organization
 * @param type domain-specific type of data
 * @param data payload as bytes
 * @throws IllegalArugmentException if either domain or type are empty or invalid
 */
public static NdefRecord createExternal(String domain, String type, byte[] data) {
    if (domain == null) throw new NullPointerException("domain is null");
    if (type == null) throw new NullPointerException("type is null");

    domain = domain.trim().toLowerCase(Locale.US);
    type = type.trim().toLowerCase(Locale.US);

    if (domain.length() == 0) throw new IllegalArgumentException("domain is empty");
    if (type.length() == 0) throw new IllegalArgumentException("type is empty");

    byte[] byteDomain = domain.getBytes(Charsets.UTF_8);
    byte[] byteType = type.getBytes(Charsets.UTF_8);
    byte[] b = new byte[byteDomain.length + 1 + byteType.length];
    System.arraycopy(byteDomain, 0, b, 0, byteDomain.length);
    b[byteDomain.length] = ':';
    System.arraycopy(byteType, 0, b, byteDomain.length + 1, byteType.length);

    return new NdefRecord(TNF_EXTERNAL_TYPE, b, null, data);
}
项目:effective_android_sample    文件:NdefRecord.java   
/**
 * Create a new Android Application Record (AAR).
 * <p>
 * This record indicates to other Android devices the package
 * that should be used to handle the entire NDEF message.
 * You can embed this record anywhere into your message
 * to ensure that the intended package receives the message.
 * <p>
 * When an Android device dispatches an {@link NdefMessage}
 * containing one or more Android application records,
 * the applications contained in those records will be the
 * preferred target for the {@link NfcAdapter#ACTION_NDEF_DISCOVERED}
 * intent, in the order in which they appear in the message.
 * This dispatch behavior was first added to Android in
 * Ice Cream Sandwich.
 * <p>
 * If none of the applications have a are installed on the device,
 * a Market link will be opened to the first application.
 * <p>
 * Note that Android application records do not overrule
 * applications that have called
 * {@link NfcAdapter#enableForegroundDispatch}.
 *
 * @param packageName Android package name
 * @return Android application NDEF record
 */
public static NdefRecord createApplicationRecord(String packageName) {
    if (packageName == null) throw new NullPointerException("packageName is null");
    if (packageName.length() == 0) throw new IllegalArgumentException("packageName is empty");

    return new NdefRecord(TNF_EXTERNAL_TYPE, RTD_ANDROID_APP, null,
            packageName.getBytes(Charsets.UTF_8));
}
项目:effective_android_sample    文件:NdefRecord.java   
/**
 * Map this record to a MIME type, or return null if it cannot be mapped.<p>
 * Currently this method considers all {@link #TNF_MIME_MEDIA} records to
 * be MIME records, as well as some {@link #TNF_WELL_KNOWN} records such as
 * {@link #RTD_TEXT}. If this is a MIME record then the MIME type as string
 * is returned, otherwise null is returned.<p>
 * This method does not perform validation that the MIME type is
 * actually valid. It always attempts to
 * return a string containing the type if this is a MIME record.<p>
 * The returned MIME type will by normalized to lower-case using
 * {@link Intent#normalizeMimeType}.<p>
 * The MIME payload can be obtained using {@link #getPayload}.
 *
 * @return MIME type as a string, or null if this is not a MIME record
 */
public String toMimeType() {
    switch (mTnf) {
        case NdefRecord.TNF_WELL_KNOWN:
            if (Arrays.equals(mType, NdefRecord.RTD_TEXT)) {
                return "text/plain";
            }
            break;
        case NdefRecord.TNF_MIME_MEDIA:
            String mimeType = new String(mType, Charsets.US_ASCII);
            return Intent.normalizeMimeType(mimeType);
    }
    return null;
}
项目:In-the-Box-Fork    文件:Attributes.java   
/**
 * Returns this attribute name.
 *
 * @return the attribute name.
 */
@Override
public String toString() {
    return new String(name, Charsets.ISO_8859_1);
}
项目:In-the-Box-Fork    文件:ASN1StringType.java   
/**
 * Extracts String object from BER input stream.
 *
 * @param in - BER input stream
 * @return java.land.String object
 */
public Object getDecodedObject(BerInputStream in) throws IOException {
    /* To ensure we get the correct encoding on non-ASCII platforms, specify
       that we wish to convert from ASCII to the default platform encoding */
    return new String(in.buffer, in.contentOffset, in.length, Charsets.ISO_8859_1);
}