.class public Lcom/common/uitl/Base64Coder; .super Ljava/lang/Object; .source "Base64Coder.java" # static fields .field private static final map1:[C .field private static final map2:[B .field private static final systemLineSeparator:Ljava/lang/String; # direct methods .method static constructor ()V .registers 6 .line 33 const-string v0, "line.separator" invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 sput-object v0, Lcom/common/uitl/Base64Coder;->systemLineSeparator:Ljava/lang/String; const/16 v0, 0x40 .line 36 new-array v1, v0, [C sput-object v1, Lcom/common/uitl/Base64Coder;->map1:[C const/4 v1, 0x0 const/16 v2, 0x41 move v3, v1 :goto_12 const/16 v4, 0x5a if-gt v2, v4, :cond_21 .line 39 sget-object v4, Lcom/common/uitl/Base64Coder;->map1:[C add-int/lit8 v5, v3, 0x1 aput-char v2, v4, v3 add-int/lit8 v2, v2, 0x1 int-to-char v2, v2 move v3, v5 goto :goto_12 :cond_21 const/16 v2, 0x61 :goto_23 const/16 v4, 0x7a if-gt v2, v4, :cond_32 .line 40 sget-object v4, Lcom/common/uitl/Base64Coder;->map1:[C add-int/lit8 v5, v3, 0x1 aput-char v2, v4, v3 add-int/lit8 v2, v2, 0x1 int-to-char v2, v2 move v3, v5 goto :goto_23 :cond_32 const/16 v2, 0x30 :goto_34 const/16 v4, 0x39 if-gt v2, v4, :cond_43 .line 41 sget-object v4, Lcom/common/uitl/Base64Coder;->map1:[C add-int/lit8 v5, v3, 0x1 aput-char v2, v4, v3 add-int/lit8 v2, v2, 0x1 int-to-char v2, v2 move v3, v5 goto :goto_34 .line 42 :cond_43 sget-object v2, Lcom/common/uitl/Base64Coder;->map1:[C add-int/lit8 v4, v3, 0x1 const/16 v5, 0x2b aput-char v5, v2, v3 const/16 v3, 0x2f aput-char v3, v2, v4 const/16 v2, 0x80 .line 45 new-array v2, v2, [B sput-object v2, Lcom/common/uitl/Base64Coder;->map2:[B move v2, v1 .line 47 :goto_56 sget-object v3, Lcom/common/uitl/Base64Coder;->map2:[B array-length v4, v3 if-ge v2, v4, :cond_61 const/4 v4, -0x1 aput-byte v4, v3, v2 add-int/lit8 v2, v2, 0x1 goto :goto_56 :cond_61 :goto_61 if-ge v1, v0, :cond_6f .line 48 sget-object v2, Lcom/common/uitl/Base64Coder;->map2:[B sget-object v3, Lcom/common/uitl/Base64Coder;->map1:[C aget-char v3, v3, v1 int-to-byte v4, v1 aput-byte v4, v2, v3 add-int/lit8 v1, v1, 0x1 goto :goto_61 :cond_6f return-void .end method .method private constructor ()V .registers 1 .line 225 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static decode(Ljava/lang/String;)[B .registers 1 .line 174 invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C move-result-object p0 invoke-static {p0}, Lcom/common/uitl/Base64Coder;->decode([C)[B move-result-object p0 return-object p0 .end method .method public static decode([C)[B .registers 3 const/4 v0, 0x0 .line 184 array-length v1, p0 invoke-static {p0, v0, v1}, Lcom/common/uitl/Base64Coder;->decode([CII)[B move-result-object p0 return-object p0 .end method .method public static decode([CII)[B .registers 13 .line 196 rem-int/lit8 v0, p2, 0x4 if-nez v0, :cond_8c :goto_4 if-lez p2, :cond_13 add-int v0, p1, p2 add-int/lit8 v0, v0, -0x1 .line 197 aget-char v0, p0, v0 const/16 v1, 0x3d if-ne v0, v1, :cond_13 add-int/lit8 p2, p2, -0x1 goto :goto_4 :cond_13 mul-int/lit8 v0, p2, 0x3 .line 198 div-int/lit8 v0, v0, 0x4 .line 199 new-array v1, v0, [B add-int/2addr p2, p1 const/4 v2, 0x0 :goto_1b if-ge p1, p2, :cond_8b add-int/lit8 v3, p1, 0x1 .line 204 aget-char v4, p0, p1 add-int/lit8 v5, p1, 0x2 .line 205 aget-char v3, p0, v3 const/16 v6, 0x41 if-ge v5, p2, :cond_2e add-int/lit8 p1, p1, 0x3 .line 206 aget-char v5, p0, v5 goto :goto_30 :cond_2e move p1, v5 move v5, v6 :goto_30 if-ge p1, p2, :cond_39 add-int/lit8 v6, p1, 0x1 .line 207 aget-char p1, p0, p1 move v9, v6 move v6, p1 move p1, v9 .line 208 :cond_39 const-string v7, "Illegal character in Base64 encoded data." const/16 v8, 0x7f if-gt v4, v8, :cond_85 if-gt v3, v8, :cond_85 if-gt v5, v8, :cond_85 if-gt v6, v8, :cond_85 .line 210 sget-object v8, Lcom/common/uitl/Base64Coder;->map2:[B aget-byte v4, v8, v4 .line 211 aget-byte v3, v8, v3 .line 212 aget-byte v5, v8, v5 .line 213 aget-byte v6, v8, v6 if-ltz v4, :cond_7f if-ltz v3, :cond_7f if-ltz v5, :cond_7f if-ltz v6, :cond_7f shl-int/lit8 v4, v4, 0x2 ushr-int/lit8 v7, v3, 0x4 or-int/2addr v4, v7 and-int/lit8 v3, v3, 0xf shl-int/lit8 v3, v3, 0x4 ushr-int/lit8 v7, v5, 0x2 or-int/2addr v3, v7 and-int/lit8 v5, v5, 0x3 shl-int/lit8 v5, v5, 0x6 or-int/2addr v5, v6 add-int/lit8 v6, v2, 0x1 int-to-byte v4, v4 .line 219 aput-byte v4, v1, v2 if-ge v6, v0, :cond_75 add-int/lit8 v2, v2, 0x2 int-to-byte v3, v3 .line 220 aput-byte v3, v1, v6 move v6, v2 :cond_75 if-ge v6, v0, :cond_7d add-int/lit8 v2, v6, 0x1 int-to-byte v3, v5 .line 221 aput-byte v3, v1, v6 goto :goto_1b :cond_7d move v2, v6 goto :goto_1b .line 215 :cond_7f new-instance p0, Ljava/lang/IllegalArgumentException; invoke-direct {p0, v7}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p0 .line 209 :cond_85 new-instance p0, Ljava/lang/IllegalArgumentException; invoke-direct {p0, v7}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p0 :cond_8b return-object v1 .line 196 :cond_8c new-instance p0, Ljava/lang/IllegalArgumentException; const-string p1, "Length of Base64 encoded input string is not a multiple of 4." invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p0 .end method .method public static decodeLines(Ljava/lang/String;)[B .registers 7 .line 158 invoke-virtual {p0}, Ljava/lang/String;->length()I move-result v0 new-array v0, v0, [C const/4 v1, 0x0 move v2, v1 move v3, v2 .line 160 :goto_9 invoke-virtual {p0}, Ljava/lang/String;->length()I move-result v4 if-ge v2, v4, :cond_2b .line 161 invoke-virtual {p0, v2}, Ljava/lang/String;->charAt(I)C move-result v4 const/16 v5, 0x20 if-eq v4, v5, :cond_28 const/16 v5, 0xd if-eq v4, v5, :cond_28 const/16 v5, 0xa if-eq v4, v5, :cond_28 const/16 v5, 0x9 if-eq v4, v5, :cond_28 add-int/lit8 v5, v3, 0x1 .line 163 aput-char v4, v0, v3 move v3, v5 :cond_28 add-int/lit8 v2, v2, 0x1 goto :goto_9 .line 164 :cond_2b invoke-static {v0, v1, v3}, Lcom/common/uitl/Base64Coder;->decode([CII)[B move-result-object p0 return-object p0 .end method .method public static decodeString(Ljava/lang/String;)Ljava/lang/String; .registers 2 .line 147 new-instance v0, Ljava/lang/String; invoke-static {p0}, Lcom/common/uitl/Base64Coder;->decode(Ljava/lang/String;)[B move-result-object p0 invoke-direct {v0, p0}, Ljava/lang/String;->([B)V return-object v0 .end method .method public static encode([B)[C .registers 3 const/4 v0, 0x0 .line 98 array-length v1, p0 invoke-static {p0, v0, v1}, Lcom/common/uitl/Base64Coder;->encode([BII)[C move-result-object p0 return-object p0 .end method .method public static encode([BI)[C .registers 3 const/4 v0, 0x0 .line 108 invoke-static {p0, v0, p1}, Lcom/common/uitl/Base64Coder;->encode([BII)[C move-result-object p0 return-object p0 .end method .method public static encode([BII)[C .registers 13 mul-int/lit8 v0, p2, 0x4 add-int/lit8 v0, v0, 0x2 .line 119 div-int/lit8 v0, v0, 0x3 add-int/lit8 v1, p2, 0x2 .line 120 div-int/lit8 v1, v1, 0x3 mul-int/lit8 v1, v1, 0x4 .line 121 new-array v1, v1, [C add-int/2addr p2, p1 const/4 v2, 0x0 move v3, v2 :goto_11 if-ge p1, p2, :cond_65 add-int/lit8 v4, p1, 0x1 .line 126 aget-byte v5, p0, p1 and-int/lit16 v6, v5, 0xff if-ge v4, p2, :cond_22 add-int/lit8 p1, p1, 0x2 .line 127 aget-byte v4, p0, v4 and-int/lit16 v4, v4, 0xff goto :goto_24 :cond_22 move p1, v4 move v4, v2 :goto_24 if-ge p1, p2, :cond_2d add-int/lit8 v7, p1, 0x1 .line 128 aget-byte p1, p0, p1 and-int/lit16 p1, p1, 0xff goto :goto_2f :cond_2d move v7, p1 move p1, v2 :goto_2f ushr-int/lit8 v6, v6, 0x2 and-int/lit8 v5, v5, 0x3 shl-int/lit8 v5, v5, 0x4 ushr-int/lit8 v8, v4, 0x4 or-int/2addr v5, v8 and-int/lit8 v4, v4, 0xf shl-int/lit8 v4, v4, 0x2 ushr-int/lit8 v8, p1, 0x6 or-int/2addr v4, v8 and-int/lit8 p1, p1, 0x3f add-int/lit8 v8, v3, 0x1 .line 133 sget-object v9, Lcom/common/uitl/Base64Coder;->map1:[C aget-char v6, v9, v6 aput-char v6, v1, v3 add-int/lit8 v6, v3, 0x2 .line 134 aget-char v5, v9, v5 aput-char v5, v1, v8 const/16 v5, 0x3d if-ge v6, v0, :cond_56 .line 135 aget-char v4, v9, v4 goto :goto_57 :cond_56 move v4, v5 :goto_57 aput-char v4, v1, v6 add-int/lit8 v4, v3, 0x3 if-ge v4, v0, :cond_5f .line 136 aget-char v5, v9, p1 :cond_5f aput-char v5, v1, v4 add-int/lit8 v3, v3, 0x4 move p1, v7 goto :goto_11 :cond_65 return-object v1 .end method .method public static encodeLines([B)Ljava/lang/String; .registers 5 .line 66 array-length v0, p0 const/16 v1, 0x4c sget-object v2, Lcom/common/uitl/Base64Coder;->systemLineSeparator:Ljava/lang/String; const/4 v3, 0x0 invoke-static {p0, v3, v0, v1, v2}, Lcom/common/uitl/Base64Coder;->encodeLines([BIIILjava/lang/String;)Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static encodeLines([BIIILjava/lang/String;)Ljava/lang/String; .registers 9 mul-int/lit8 p3, p3, 0x3 .line 78 div-int/lit8 p3, p3, 0x4 if-lez p3, :cond_38 add-int v0, p2, p3 add-int/lit8 v0, v0, -0x1 .line 80 div-int/2addr v0, p3 add-int/lit8 v1, p2, 0x2 .line 81 div-int/lit8 v1, v1, 0x3 mul-int/lit8 v1, v1, 0x4 invoke-virtual {p4}, Ljava/lang/String;->length()I move-result v2 mul-int/2addr v0, v2 add-int/2addr v1, v0 .line 82 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(I)V const/4 v1, 0x0 :goto_1d if-ge v1, p2, :cond_33 sub-int v2, p2, v1 .line 85 invoke-static {v2, p3}, Ljava/lang/Math;->min(II)I move-result v2 add-int v3, p1, v1 .line 86 invoke-static {p0, v3, v2}, Lcom/common/uitl/Base64Coder;->encode([BII)[C move-result-object v3 invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append([C)Ljava/lang/StringBuilder; .line 87 invoke-virtual {v0, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; add-int/2addr v1, v2 goto :goto_1d .line 89 :cond_33 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 return-object p0 .line 79 :cond_38 new-instance p0, Ljava/lang/IllegalArgumentException; invoke-direct {p0}, Ljava/lang/IllegalArgumentException;->()V throw p0 .end method .method public static encodeString(Ljava/lang/String;)Ljava/lang/String; .registers 2 .line 57 new-instance v0, Ljava/lang/String; invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B move-result-object p0 invoke-static {p0}, Lcom/common/uitl/Base64Coder;->encode([B)[C move-result-object p0 invoke-direct {v0, p0}, Ljava/lang/String;->([C)V return-object v0 .end method