.class public Lorg/apache/http/impl/auth/DigestScheme; .super Lorg/apache/http/impl/auth/RFC2617Scheme; .source "DigestScheme.java" # static fields .field private static final HEXADECIMAL:[C .field private static final QOP_AUTH:I = 0x2 .field private static final QOP_AUTH_INT:I = 0x1 .field private static final QOP_MISSING:I = 0x0 .field private static final QOP_UNKNOWN:I = -0x1 .field private static final serialVersionUID:J = 0x35e669eae4be3904L # instance fields .field private a1:Ljava/lang/String; .field private a2:Ljava/lang/String; .field private cnonce:Ljava/lang/String; .field private complete:Z .field private lastNonce:Ljava/lang/String; .field private nounceCount:J # direct methods .method static constructor ()V .registers 1 const/16 v0, 0x10 .line 84 new-array v0, v0, [C fill-array-data v0, :array_a sput-object v0, Lorg/apache/http/impl/auth/DigestScheme;->HEXADECIMAL:[C return-void :array_a .array-data 2 0x30s 0x31s 0x32s 0x33s 0x34s 0x35s 0x36s 0x37s 0x38s 0x39s 0x61s 0x62s 0x63s 0x64s 0x65s 0x66s .end array-data .end method .method public constructor ()V .registers 2 .line 125 sget-object v0, Lorg/apache/http/Consts;->ASCII:Ljava/nio/charset/Charset; invoke-direct {p0, v0}, Lorg/apache/http/impl/auth/DigestScheme;->(Ljava/nio/charset/Charset;)V return-void .end method .method public constructor (Ljava/nio/charset/Charset;)V .registers 2 .line 107 invoke-direct {p0, p1}, Lorg/apache/http/impl/auth/RFC2617Scheme;->(Ljava/nio/charset/Charset;)V const/4 p1, 0x0 .line 108 iput-boolean p1, p0, Lorg/apache/http/impl/auth/DigestScheme;->complete:Z return-void .end method .method public constructor (Lorg/apache/http/auth/ChallengeState;)V .registers 2 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 121 invoke-direct {p0, p1}, Lorg/apache/http/impl/auth/RFC2617Scheme;->(Lorg/apache/http/auth/ChallengeState;)V return-void .end method .method public static createCnonce()Ljava/lang/String; .registers 2 .line 481 new-instance v0, Ljava/security/SecureRandom; invoke-direct {v0}, Ljava/security/SecureRandom;->()V const/16 v1, 0x8 .line 482 new-array v1, v1, [B .line 483 invoke-virtual {v0, v1}, Ljava/security/SecureRandom;->nextBytes([B)V .line 484 invoke-static {v1}, Lorg/apache/http/impl/auth/DigestScheme;->encode([B)Ljava/lang/String; move-result-object v0 return-object v0 .end method .method private createDigestHeader(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header; .registers 32 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/auth/AuthenticationException; } .end annotation move-object/from16 v1, p0 move-object/from16 v0, p2 .line 256 const-string v2, "uri" invoke-virtual {v1, v2}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v3 .line 257 const-string v4, "realm" invoke-virtual {v1, v4}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v5 .line 258 const-string v6, "nonce" invoke-virtual {v1, v6}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v7 .line 259 const-string v8, "opaque" invoke-virtual {v1, v8}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v9 .line 260 const-string v10, "methodname" invoke-virtual {v1, v10}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v10 .line 261 const-string v11, "algorithm" invoke-virtual {v1, v11}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v12 .line 263 const-string v13, "MD5" if-nez v12, :cond_2d move-object v12, v13 .line 267 :cond_2d new-instance v14, Ljava/util/HashSet; const/16 v15, 0x8 invoke-direct {v14, v15}, Ljava/util/HashSet;->(I)V .line 269 const-string v15, "qop" move-object/from16 v16, v13 invoke-virtual {v1, v15}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v13 move-object/from16 v17, v8 .line 270 const-string v8, "auth-int" move-object/from16 v20, v9 const-string v9, "auth" move-object/from16 v21, v11 if-eqz v13, :cond_83 .line 271 new-instance v11, Ljava/util/StringTokenizer; move-object/from16 v22, v15 const-string v15, "," invoke-direct {v11, v13, v15}, Ljava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;)V .line 272 :goto_51 invoke-virtual {v11}, Ljava/util/StringTokenizer;->hasMoreTokens()Z move-result v15 if-eqz v15, :cond_6d .line 273 invoke-virtual {v11}, Ljava/util/StringTokenizer;->nextToken()Ljava/lang/String; move-result-object v15 invoke-virtual {v15}, Ljava/lang/String;->trim()Ljava/lang/String; move-result-object v15 move-object/from16 v23, v11 .line 274 sget-object v11, Ljava/util/Locale;->ROOT:Ljava/util/Locale; invoke-virtual {v15, v11}, Ljava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String; move-result-object v11 invoke-interface {v14, v11}, Ljava/util/Set;->add(Ljava/lang/Object;)Z move-object/from16 v11, v23 goto :goto_51 .line 276 :cond_6d instance-of v11, v0, Lorg/apache/http/HttpEntityEnclosingRequest; if-eqz v11, :cond_79 invoke-interface {v14, v8}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v11 if-eqz v11, :cond_79 const/4 v11, 0x1 goto :goto_86 .line 278 :cond_79 invoke-interface {v14, v9}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v11 if-eqz v11, :cond_81 const/4 v11, 0x2 goto :goto_86 :cond_81 const/4 v11, -0x1 goto :goto_86 :cond_83 move-object/from16 v22, v15 const/4 v11, 0x0 :goto_86 const/4 v15, -0x1 if-eq v11, v15, :cond_3b6 .line 289 const-string v13, "charset" invoke-virtual {v1, v13}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v13 if-nez v13, :cond_93 .line 291 const-string v13, "ISO-8859-1" .line 295 :cond_93 const-string v15, "MD5-sess" invoke-virtual {v12, v15}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v18 if-eqz v18, :cond_9e move-object/from16 v18, v8 goto :goto_a2 :cond_9e move-object/from16 v18, v8 move-object/from16 v16, v12 .line 301 :goto_a2 :try_start_a2 invoke-static/range {v16 .. v16}, Lorg/apache/http/impl/auth/DigestScheme;->createMessageDigest(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object v8 :try_end_a6 .catch Lorg/apache/http/impl/auth/UnsupportedDigestAlgorithmException; {:try_start_a2 .. :try_end_a6} :catch_39f .line 306 invoke-interface/range {p1 .. p1}, Lorg/apache/http/auth/Credentials;->getUserPrincipal()Ljava/security/Principal; move-result-object v16 move-object/from16 v23, v2 invoke-interface/range {v16 .. v16}, Ljava/security/Principal;->getName()Ljava/lang/String; move-result-object v2 move-object/from16 v24, v6 .line 307 invoke-interface/range {p1 .. p1}, Lorg/apache/http/auth/Credentials;->getPassword()Ljava/lang/String; move-result-object v6 move-object/from16 v25, v4 .line 309 iget-object v4, v1, Lorg/apache/http/impl/auth/DigestScheme;->lastNonce:Ljava/lang/String; invoke-virtual {v7, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v4 move-object/from16 v27, v9 move-object/from16 v26, v10 if-eqz v4, :cond_ce .line 310 iget-wide v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->nounceCount:J move-object/from16 v28, v3 const-wide/16 v3, 0x1 add-long/2addr v9, v3 iput-wide v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->nounceCount:J goto :goto_d9 :cond_ce move-object/from16 v28, v3 const-wide/16 v3, 0x1 .line 312 iput-wide v3, v1, Lorg/apache/http/impl/auth/DigestScheme;->nounceCount:J const/4 v3, 0x0 .line 313 iput-object v3, v1, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; .line 314 iput-object v7, v1, Lorg/apache/http/impl/auth/DigestScheme;->lastNonce:Ljava/lang/String; .line 316 :goto_d9 new-instance v3, Ljava/lang/StringBuilder; const/16 v4, 0x100 invoke-direct {v3, v4}, Ljava/lang/StringBuilder;->(I)V .line 317 new-instance v4, Ljava/util/Formatter; sget-object v9, Ljava/util/Locale;->US:Ljava/util/Locale; invoke-direct {v4, v3, v9}, Ljava/util/Formatter;->(Ljava/lang/Appendable;Ljava/util/Locale;)V .line 318 iget-wide v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->nounceCount:J invoke-static {v9, v10}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v9 filled-new-array {v9}, [Ljava/lang/Object; move-result-object v9 const-string v10, "%08x" invoke-virtual {v4, v10, v9}, Ljava/util/Formatter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter; .line 319 invoke-virtual {v4}, Ljava/util/Formatter;->close()V .line 320 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v4 .line 322 iget-object v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; if-nez v9, :cond_107 .line 323 invoke-static {}, Lorg/apache/http/impl/auth/DigestScheme;->createCnonce()Ljava/lang/String; move-result-object v9 iput-object v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; :cond_107 const/4 v9, 0x0 .line 326 iput-object v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->a1:Ljava/lang/String; .line 327 iput-object v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; .line 329 invoke-virtual {v12, v15}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v10 const/16 v15, 0x3a if-eqz v10, :cond_15a const/4 v10, 0x0 .line 335 invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->setLength(I)V .line 336 invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 337 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v6 invoke-static {v6, v13}, Lorg/apache/http/util/EncodingUtils;->getBytes(Ljava/lang/String;Ljava/lang/String;)[B move-result-object v6 invoke-virtual {v8, v6}, Ljava/security/MessageDigest;->digest([B)[B move-result-object v6 invoke-static {v6}, Lorg/apache/http/impl/auth/DigestScheme;->encode([B)Ljava/lang/String; move-result-object v6 .line 338 invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->setLength(I)V .line 339 invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 iget-object v9, v1, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; invoke-virtual {v6, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 340 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v6 iput-object v6, v1, Lorg/apache/http/impl/auth/DigestScheme;->a1:Ljava/lang/String; goto :goto_177 :cond_15a const/4 v10, 0x0 .line 343 invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->setLength(I)V .line 344 invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v9 invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 345 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v6 iput-object v6, v1, Lorg/apache/http/impl/auth/DigestScheme;->a1:Ljava/lang/String; .line 348 :goto_177 iget-object v6, v1, Lorg/apache/http/impl/auth/DigestScheme;->a1:Ljava/lang/String; invoke-static {v6, v13}, Lorg/apache/http/util/EncodingUtils;->getBytes(Ljava/lang/String;Ljava/lang/String;)[B move-result-object v6 invoke-virtual {v8, v6}, Ljava/security/MessageDigest;->digest([B)[B move-result-object v6 invoke-static {v6}, Lorg/apache/http/impl/auth/DigestScheme;->encode([B)Ljava/lang/String; move-result-object v6 const/4 v9, 0x2 if-ne v11, v9, :cond_1a7 .line 352 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V move-object/from16 v10, v26 invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v15}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 move-object/from16 v9, v28 invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 iput-object v0, v1, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; move-object/from16 v15, v27 goto/16 :goto_24f :cond_1a7 move-object/from16 v10, v26 move-object/from16 v9, v28 const/4 v15, 0x1 if-ne v11, v15, :cond_234 .line 356 instance-of v15, v0, Lorg/apache/http/HttpEntityEnclosingRequest; if-eqz v15, :cond_1b9 .line 357 check-cast v0, Lorg/apache/http/HttpEntityEnclosingRequest; invoke-interface {v0}, Lorg/apache/http/HttpEntityEnclosingRequest;->getEntity()Lorg/apache/http/HttpEntity; move-result-object v0 goto :goto_1ba :cond_1b9 const/4 v0, 0x0 :goto_1ba if-eqz v0, :cond_1ee .line 359 invoke-interface {v0}, Lorg/apache/http/HttpEntity;->isRepeatable()Z move-result v15 if-nez v15, :cond_1ee move-object/from16 v15, v27 .line 361 invoke-interface {v14, v15}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_1e6 .line 363 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const/16 v10, 0x3a invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 iput-object v0, v1, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; const/16 v19, 0x2 goto :goto_228 .line 365 :cond_1e6 new-instance v0, Lorg/apache/http/auth/AuthenticationException; const-string v2, "Qop auth-int cannot be used with a non-repeatable entity" invoke-direct {v0, v2}, Lorg/apache/http/auth/AuthenticationException;->(Ljava/lang/String;)V throw v0 :cond_1ee move-object/from16 v15, v27 .line 369 new-instance v14, Lorg/apache/http/impl/auth/HttpEntityDigester; invoke-direct {v14, v8}, Lorg/apache/http/impl/auth/HttpEntityDigester;->(Ljava/security/MessageDigest;)V if-eqz v0, :cond_1fa .line 372 :try_start_1f7 invoke-interface {v0, v14}, Lorg/apache/http/HttpEntity;->writeTo(Ljava/io/OutputStream;)V .line 374 :cond_1fa invoke-virtual {v14}, Lorg/apache/http/impl/auth/HttpEntityDigester;->close()V :try_end_1fd .catch Ljava/io/IOException; {:try_start_1f7 .. :try_end_1fd} :catch_22b .line 378 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const/16 v10, 0x3a invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v14}, Lorg/apache/http/impl/auth/HttpEntityDigester;->getDigest()[B move-result-object v10 invoke-static {v10}, Lorg/apache/http/impl/auth/DigestScheme;->encode([B)Ljava/lang/String; move-result-object v10 invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 iput-object v0, v1, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; move/from16 v19, v11 :goto_228 move/from16 v11, v19 goto :goto_24f :catch_22b move-exception v0 .line 376 new-instance v2, Lorg/apache/http/auth/AuthenticationException; const-string v3, "I/O error reading entity content" invoke-direct {v2, v3, v0}, Lorg/apache/http/auth/AuthenticationException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw v2 :cond_234 move-object/from16 v15, v27 .line 381 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const/16 v10, 0x3a invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 iput-object v0, v1, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; .line 384 :goto_24f iget-object v0, v1, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; invoke-static {v0, v13}, Lorg/apache/http/util/EncodingUtils;->getBytes(Ljava/lang/String;Ljava/lang/String;)[B move-result-object v0 invoke-virtual {v8, v0}, Ljava/security/MessageDigest;->digest([B)[B move-result-object v0 invoke-static {v0}, Lorg/apache/http/impl/auth/DigestScheme;->encode([B)Ljava/lang/String; move-result-object v0 if-nez v11, :cond_27d const/4 v10, 0x0 .line 390 invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->setLength(I)V .line 391 invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 const/16 v13, 0x3a invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 392 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 goto :goto_2bb :cond_27d const/4 v10, 0x0 const/16 v13, 0x3a .line 394 invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->setLength(I)V .line 395 invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 iget-object v14, v1, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; invoke-virtual {v6, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 const/4 v14, 0x1 if-ne v11, v14, :cond_2ab move-object/from16 v14, v18 goto :goto_2ac :cond_2ab move-object v14, v15 :goto_2ac invoke-virtual {v6, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v13}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v6 invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 398 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 401 :goto_2bb invoke-static {v0}, Lorg/apache/http/util/EncodingUtils;->getAsciiBytes(Ljava/lang/String;)[B move-result-object v0 invoke-virtual {v8, v0}, Ljava/security/MessageDigest;->digest([B)[B move-result-object v0 invoke-static {v0}, Lorg/apache/http/impl/auth/DigestScheme;->encode([B)Ljava/lang/String; move-result-object v0 .line 403 new-instance v3, Lorg/apache/http/util/CharArrayBuffer; const/16 v6, 0x80 invoke-direct {v3, v6}, Lorg/apache/http/util/CharArrayBuffer;->(I)V .line 404 invoke-virtual/range {p0 .. p0}, Lorg/apache/http/impl/auth/DigestScheme;->isProxy()Z move-result v6 if-eqz v6, :cond_2da .line 405 const-string v6, "Proxy-Authorization" invoke-virtual {v3, v6}, Lorg/apache/http/util/CharArrayBuffer;->append(Ljava/lang/String;)V goto :goto_2df .line 407 :cond_2da const-string v6, "Authorization" invoke-virtual {v3, v6}, Lorg/apache/http/util/CharArrayBuffer;->append(Ljava/lang/String;)V .line 409 :goto_2df const-string v6, ": Digest " invoke-virtual {v3, v6}, Lorg/apache/http/util/CharArrayBuffer;->append(Ljava/lang/String;)V .line 411 new-instance v6, Ljava/util/ArrayList; const/16 v8, 0x14 invoke-direct {v6, v8}, Ljava/util/ArrayList;->(I)V .line 412 new-instance v8, Lorg/apache/http/message/BasicNameValuePair; const-string v13, "username" invoke-direct {v8, v13, v2}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v8}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 413 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; move-object/from16 v8, v25 invoke-direct {v2, v8, v5}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 414 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; move-object/from16 v5, v24 invoke-direct {v2, v5, v7}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 415 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; move-object/from16 v5, v23 invoke-direct {v2, v5, v9}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 416 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; const-string v5, "response" invoke-direct {v2, v5, v0}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 418 const-string v0, "nc" if-eqz v11, :cond_347 .line 419 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; const/4 v5, 0x1 if-ne v11, v5, :cond_329 move-object/from16 v8, v18 goto :goto_32a :cond_329 move-object v8, v15 :goto_32a move-object/from16 v5, v22 invoke-direct {v2, v5, v8}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 420 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; invoke-direct {v2, v0, v4}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 421 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; const-string v4, "cnonce" iget-object v7, v1, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; invoke-direct {v2, v4, v7}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_349 :cond_347 move-object/from16 v5, v22 .line 424 :goto_349 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; move-object/from16 v4, v21 invoke-direct {v2, v4, v12}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z if-eqz v20, :cond_361 .line 426 new-instance v2, Lorg/apache/http/message/BasicNameValuePair; move-object/from16 v8, v17 move-object/from16 v7, v20 invoke-direct {v2, v8, v7}, Lorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V invoke-interface {v6, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z :cond_361 move v2, v10 .line 429 :goto_362 invoke-interface {v6}, Ljava/util/List;->size()I move-result v7 if-ge v2, v7, :cond_399 .line 430 invoke-interface {v6, v2}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v7 check-cast v7, Lorg/apache/http/message/BasicNameValuePair; if-lez v2, :cond_375 .line 432 const-string v8, ", " invoke-virtual {v3, v8}, Lorg/apache/http/util/CharArrayBuffer;->append(Ljava/lang/String;)V .line 434 :cond_375 invoke-virtual {v7}, Lorg/apache/http/message/BasicNameValuePair;->getName()Ljava/lang/String; move-result-object v8 .line 435 invoke-virtual {v0, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v9 if-nez v9, :cond_38e invoke-virtual {v5, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v9 if-nez v9, :cond_38e invoke-virtual {v4, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v8 if-eqz v8, :cond_38c goto :goto_38e :cond_38c move v8, v10 goto :goto_38f :cond_38e :goto_38e const/4 v8, 0x1 .line 437 :goto_38f sget-object v9, Lorg/apache/http/message/BasicHeaderValueFormatter;->INSTANCE:Lorg/apache/http/message/BasicHeaderValueFormatter; const/4 v11, 0x1 xor-int/2addr v8, v11 invoke-virtual {v9, v3, v7, v8}, Lorg/apache/http/message/BasicHeaderValueFormatter;->formatNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer; add-int/lit8 v2, v2, 0x1 goto :goto_362 .line 439 :cond_399 new-instance v0, Lorg/apache/http/message/BufferedHeader; invoke-direct {v0, v3}, Lorg/apache/http/message/BufferedHeader;->(Lorg/apache/http/util/CharArrayBuffer;)V return-object v0 .line 303 :catch_39f new-instance v0, Lorg/apache/http/auth/AuthenticationException; new-instance v2, Ljava/lang/StringBuilder; const-string v3, "Unsuppported digest algorithm: " invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V move-object/from16 v12, v16 invoke-virtual {v2, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-direct {v0, v2}, Lorg/apache/http/auth/AuthenticationException;->(Ljava/lang/String;)V throw v0 .line 286 :cond_3b6 new-instance v0, Lorg/apache/http/auth/AuthenticationException; new-instance v2, Ljava/lang/StringBuilder; const-string v3, "None of the qop methods is supported: " invoke-direct {v2, v3}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v2, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-direct {v0, v2}, Lorg/apache/http/auth/AuthenticationException;->(Ljava/lang/String;)V throw v0 .end method .method private static createMessageDigest(Ljava/lang/String;)Ljava/security/MessageDigest; .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/impl/auth/UnsupportedDigestAlgorithmException; } .end annotation .line 238 :try_start_0 invoke-static {p0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object p0 :try_end_4 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4} :catch_5 return-object p0 .line 240 :catch_5 new-instance v0, Lorg/apache/http/impl/auth/UnsupportedDigestAlgorithmException; new-instance v1, Ljava/lang/StringBuilder; const-string v2, "Unsupported algorithm in HTTP Digest authentication: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-direct {v0, p0}, Lorg/apache/http/impl/auth/UnsupportedDigestAlgorithmException;->(Ljava/lang/String;)V throw v0 .end method .method static encode([B)Ljava/lang/String; .registers 8 .line 462 array-length v0, p0 mul-int/lit8 v1, v0, 0x2 .line 463 new-array v1, v1, [C const/4 v2, 0x0 :goto_6 if-ge v2, v0, :cond_21 .line 465 aget-byte v3, p0, v2 and-int/lit8 v4, v3, 0xf and-int/lit16 v3, v3, 0xf0 shr-int/lit8 v3, v3, 0x4 mul-int/lit8 v5, v2, 0x2 .line 467 sget-object v6, Lorg/apache/http/impl/auth/DigestScheme;->HEXADECIMAL:[C aget-char v3, v6, v3 aput-char v3, v1, v5 add-int/lit8 v5, v5, 0x1 .line 468 aget-char v3, v6, v4 aput-char v3, v1, v5 add-int/lit8 v2, v2, 0x1 goto :goto_6 .line 471 :cond_21 new-instance p0, Ljava/lang/String; invoke-direct {p0, v1}, Ljava/lang/String;->([C)V return-object p0 .end method # virtual methods .method public authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header; .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/auth/AuthenticationException; } .end annotation .annotation runtime Ljava/lang/Deprecated; .end annotation .line 194 new-instance v0, Lorg/apache/http/protocol/BasicHttpContext; invoke-direct {v0}, Lorg/apache/http/protocol/BasicHttpContext;->()V invoke-virtual {p0, p1, p2, v0}, Lorg/apache/http/impl/auth/DigestScheme;->authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/Header; move-result-object p1 return-object p1 .end method .method public authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/Header; .registers 6 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/auth/AuthenticationException; } .end annotation .line 217 const-string p3, "Credentials" invoke-static {p1, p3}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 218 const-string p3, "HTTP request" invoke-static {p2, p3}, Lorg/apache/http/util/Args;->notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 219 const-string p3, "realm" invoke-virtual {p0, p3}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object p3 if-eqz p3, :cond_5c .line 222 const-string p3, "nonce" invoke-virtual {p0, p3}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object p3 if-eqz p3, :cond_54 .line 226 invoke-virtual {p0}, Lorg/apache/http/impl/auth/DigestScheme;->getParameters()Ljava/util/Map; move-result-object p3 invoke-interface {p2}, Lorg/apache/http/HttpRequest;->getRequestLine()Lorg/apache/http/RequestLine; move-result-object v0 invoke-interface {v0}, Lorg/apache/http/RequestLine;->getMethod()Ljava/lang/String; move-result-object v0 const-string v1, "methodname" invoke-interface {p3, v1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 227 invoke-virtual {p0}, Lorg/apache/http/impl/auth/DigestScheme;->getParameters()Ljava/util/Map; move-result-object p3 invoke-interface {p2}, Lorg/apache/http/HttpRequest;->getRequestLine()Lorg/apache/http/RequestLine; move-result-object v0 invoke-interface {v0}, Lorg/apache/http/RequestLine;->getUri()Ljava/lang/String; move-result-object v0 const-string v1, "uri" invoke-interface {p3, v1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 228 const-string p3, "charset" invoke-virtual {p0, p3}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 if-nez v0, :cond_4f .line 230 invoke-virtual {p0}, Lorg/apache/http/impl/auth/DigestScheme;->getParameters()Ljava/util/Map; move-result-object v0 invoke-virtual {p0, p2}, Lorg/apache/http/impl/auth/DigestScheme;->getCredentialsCharset(Lorg/apache/http/HttpRequest;)Ljava/lang/String; move-result-object v1 invoke-interface {v0, p3, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 232 :cond_4f invoke-direct {p0, p1, p2}, Lorg/apache/http/impl/auth/DigestScheme;->createDigestHeader(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header; move-result-object p1 return-object p1 .line 223 :cond_54 new-instance p1, Lorg/apache/http/auth/AuthenticationException; const-string p2, "missing nonce in challenge" invoke-direct {p1, p2}, Lorg/apache/http/auth/AuthenticationException;->(Ljava/lang/String;)V throw p1 .line 220 :cond_5c new-instance p1, Lorg/apache/http/auth/AuthenticationException; const-string p2, "missing realm in challenge" invoke-direct {p1, p2}, Lorg/apache/http/auth/AuthenticationException;->(Ljava/lang/String;)V throw p1 .end method .method getA1()Ljava/lang/String; .registers 2 .line 447 iget-object v0, p0, Lorg/apache/http/impl/auth/DigestScheme;->a1:Ljava/lang/String; return-object v0 .end method .method getA2()Ljava/lang/String; .registers 2 .line 451 iget-object v0, p0, Lorg/apache/http/impl/auth/DigestScheme;->a2:Ljava/lang/String; return-object v0 .end method .method getCnonce()Ljava/lang/String; .registers 2 .line 443 iget-object v0, p0, Lorg/apache/http/impl/auth/DigestScheme;->cnonce:Ljava/lang/String; return-object v0 .end method .method public getSchemeName()Ljava/lang/String; .registers 2 .line 169 const-string v0, "digest" return-object v0 .end method .method public isComplete()Z .registers 3 .line 154 const-string v0, "stale" invoke-virtual {p0, v0}, Lorg/apache/http/impl/auth/DigestScheme;->getParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 .line 155 const-string v1, "true" invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z move-result v0 if-eqz v0, :cond_10 const/4 v0, 0x0 return v0 .line 158 :cond_10 iget-boolean v0, p0, Lorg/apache/http/impl/auth/DigestScheme;->complete:Z return v0 .end method .method public isConnectionBased()Z .registers 2 const/4 v0, 0x0 return v0 .end method .method public overrideParamter(Ljava/lang/String;Ljava/lang/String;)V .registers 4 .line 183 invoke-virtual {p0}, Lorg/apache/http/impl/auth/DigestScheme;->getParameters()Ljava/util/Map; move-result-object v0 invoke-interface {v0, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; return-void .end method .method public processChallenge(Lorg/apache/http/Header;)V .registers 3 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/auth/MalformedChallengeException; } .end annotation .line 139 invoke-super {p0, p1}, Lorg/apache/http/impl/auth/RFC2617Scheme;->processChallenge(Lorg/apache/http/Header;)V const/4 p1, 0x1 .line 140 iput-boolean p1, p0, Lorg/apache/http/impl/auth/DigestScheme;->complete:Z .line 141 invoke-virtual {p0}, Lorg/apache/http/impl/auth/DigestScheme;->getParameters()Ljava/util/Map; move-result-object p1 invoke-interface {p1}, Ljava/util/Map;->isEmpty()Z move-result p1 if-nez p1, :cond_11 return-void .line 142 :cond_11 new-instance p1, Lorg/apache/http/auth/MalformedChallengeException; const-string v0, "Authentication challenge is empty" invoke-direct {p1, v0}, Lorg/apache/http/auth/MalformedChallengeException;->(Ljava/lang/String;)V throw p1 .end method .method public toString()Ljava/lang/String; .registers 5 .line 489 new-instance v0, Ljava/lang/StringBuilder; const-string v1, "DIGEST [complete=" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V .line 490 iget-boolean v1, p0, Lorg/apache/http/impl/auth/DigestScheme;->complete:Z invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, ", nonce=" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 iget-object v2, p0, Lorg/apache/http/impl/auth/DigestScheme;->lastNonce:Ljava/lang/String; invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, ", nc=" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 iget-wide v2, p0, Lorg/apache/http/impl/auth/DigestScheme;->nounceCount:J invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; move-result-object v1 const-string v2, "]" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 494 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 .end method