anchor.diff:      SaltedPassword = scram:salted_password(HashMethod, Password, Salt, Iteration),
       ClientKey = scram:client_key(HashMethod, SaltedPassword),
       StoredKey = scram:stored_key(HashMethod, ClientKey),
  -    GS2Headers64 = base64:encode(GS2Headers),
  -    ClientFinalMessageWithoutProof = <<"c=",GS2Headers64/binary,",r=", Nonce/binary>>,
  +    CAttribute = build_c_attribute(PlusVariant, GS2Headers, Conn),
  +    ClientFinalMessageWithoutProof = <<CAttribute/binary, ",r=", Nonce/binary>>,
       AuthMessage = <<ClientFirstMessageBare/binary,$,,
                       Challenge/binary,$,,
                       ClientFinalMessageWithoutProof/binary>>,
  
positive.code:                            ",p=", ClientProof/binary>>,
      {base64_cdata(ClientFinalMessage),SaltedPassword, AuthMessage}.
  
  scram_sha_validate_server(HashMethod, SaltedPassword, AuthMessage, ServerSignature) ->
      ServerKey = scram:server_key(HashMethod, SaltedPassword),
      ServerSignatureComputed = scram:server_signature(HashMethod, ServerKey, AuthMessage),
  
negative.code:         {<<"authzid">>, FullJid}
      ])).
  
  scram_sha_response(PlusVariant, HashMethod, Conn, GS2Headers, ClientFirstMessageBare, Props) ->
      Challenge = get_challenge(Conn, challenge1, false),
      ChallengeData = csvkv:parse(Challenge),
      Password = get_property(password, Props),
  