.class public Lcom/amazonaws/util/Md5Utils; .super Ljava/lang/Object; .source "Md5Utils.java" # static fields .field private static final FOURTEEN:I = 0xe .field private static final SIXTEEN_K:I = 0x4000 # direct methods .method public constructor ()V .locals 0 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static computeMD5Hash(Ljava/io/File;)[B .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 15 new-instance v0, Ljava/io/FileInputStream; invoke-direct {v0, p0}, Ljava/io/FileInputStream;->(Ljava/io/File;)V invoke-static {v0}, Lcom/amazonaws/util/Md5Utils;->computeMD5Hash(Ljava/io/InputStream;)[B move-result-object p0 return-object p0 .end method .method public static computeMD5Hash(Ljava/io/InputStream;)[B .locals 8 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation const-string v0, "Unable to close input stream of hash candidate: " .line 1 const-class v1, Lcom/amazonaws/util/Md5Utils; new-instance v2, Ljava/io/BufferedInputStream; invoke-direct {v2, p0}, Ljava/io/BufferedInputStream;->(Ljava/io/InputStream;)V :try_start_0 const-string p0, "MD5" .line 2 invoke-static {p0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object p0 const/16 v3, 0x4000 new-array v4, v3, [B :goto_0 const/4 v5, 0x0 .line 3 invoke-virtual {v2, v4, v5, v3}, Ljava/io/BufferedInputStream;->read([BII)I move-result v6 const/4 v7, -0x1 if-eq v6, v7, :cond_0 .line 4 invoke-virtual {p0, v4, v5, v6}, Ljava/security/MessageDigest;->update([BII)V goto :goto_0 .line 5 :cond_0 invoke-virtual {p0}, Ljava/security/MessageDigest;->digest()[B move-result-object p0 :try_end_0 .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_1 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 6 :try_start_1 invoke-virtual {v2}, Ljava/io/BufferedInputStream;->close()V :try_end_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 goto :goto_1 :catch_0 move-exception v2 .line 7 invoke-static {v1}, Lcom/amazonaws/logging/LogFactory;->getLog(Ljava/lang/Class;)Lcom/amazonaws/logging/Log; move-result-object v1 new-instance v3, Ljava/lang/StringBuilder; invoke-direct {v3}, Ljava/lang/StringBuilder;->()V invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {v1, v0}, Lcom/amazonaws/logging/Log;->debug(Ljava/lang/Object;)V :goto_1 return-object p0 :catchall_0 move-exception p0 goto :goto_2 :catch_1 move-exception p0 .line 8 :try_start_2 new-instance v3, Ljava/lang/IllegalStateException; invoke-direct {v3, p0}, Ljava/lang/IllegalStateException;->(Ljava/lang/Throwable;)V throw v3 :try_end_2 .catchall {:try_start_2 .. :try_end_2} :catchall_0 .line 9 :goto_2 :try_start_3 invoke-virtual {v2}, Ljava/io/BufferedInputStream;->close()V :try_end_3 .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_2 goto :goto_3 :catch_2 move-exception v2 .line 10 invoke-static {v1}, Lcom/amazonaws/logging/LogFactory;->getLog(Ljava/lang/Class;)Lcom/amazonaws/logging/Log; move-result-object v1 new-instance v3, Ljava/lang/StringBuilder; invoke-direct {v3}, Ljava/lang/StringBuilder;->()V invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-interface {v1, v0}, Lcom/amazonaws/logging/Log;->debug(Ljava/lang/Object;)V .line 11 :goto_3 throw p0 .end method .method public static computeMD5Hash([B)[B .locals 1 :try_start_0 const-string v0, "MD5" .line 12 invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object v0 .line 13 invoke-virtual {v0, p0}, Ljava/security/MessageDigest;->digest([B)[B move-result-object p0 :try_end_0 .catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_0 return-object p0 :catch_0 move-exception p0 .line 14 new-instance v0, Ljava/lang/IllegalStateException; invoke-direct {v0, p0}, Ljava/lang/IllegalStateException;->(Ljava/lang/Throwable;)V throw v0 .end method .method public static md5AsBase64(Ljava/io/File;)Ljava/lang/String; .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 3 invoke-static {p0}, Lcom/amazonaws/util/Md5Utils;->computeMD5Hash(Ljava/io/File;)[B move-result-object p0 invoke-static {p0}, Lcom/amazonaws/util/Base64;->encodeAsString([B)Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static md5AsBase64(Ljava/io/InputStream;)Ljava/lang/String; .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 1 invoke-static {p0}, Lcom/amazonaws/util/Md5Utils;->computeMD5Hash(Ljava/io/InputStream;)[B move-result-object p0 invoke-static {p0}, Lcom/amazonaws/util/Base64;->encodeAsString([B)Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static md5AsBase64([B)Ljava/lang/String; .locals 0 .line 2 invoke-static {p0}, Lcom/amazonaws/util/Md5Utils;->computeMD5Hash([B)[B move-result-object p0 invoke-static {p0}, Lcom/amazonaws/util/Base64;->encodeAsString([B)Ljava/lang/String; move-result-object p0 return-object p0 .end method