1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.util.encoders; 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Convert binary data to and from UrlBase64 encoding. This is identical to 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Base64 encoding, except that the padding character is "." and the other 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * non-alphanumeric characters are "-" and "_" instead of "+" and "/". 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The purpose of UrlBase64 encoding is to provide a compact encoding of binary 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * data that is safe for use as an URL parameter. Base64 encoding does not 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * produce encoded values that are safe for use in URLs, since "/" can be 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * interpreted as a path delimiter; "+" is the encoded form of a space; and 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * "=" is used to separate a name from the corresponding value in an URL 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * parameter. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class UrlBase64Encoder extends Base64Encoder 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public UrlBase64Encoder() 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project encodingTable[encodingTable.length - 2] = (byte) '-'; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project encodingTable[encodingTable.length - 1] = (byte) '_'; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project padding = (byte) '.'; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // we must re-create the decoding table with the new encoded values. 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project initialiseDecodingTable(); 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 26