Yup, in your case, with:

>> digest (.digest
>>                (doto (java.security.MessageDigest/getInstance "sha1")
>>                      .reset
>>                      (.update nonce-bytes)
>>                      (.update created-bytes)
>>                      (.update secret-bytes)))


you do not have to worry about calling .digest twice on the same instance.

-FS.



On Mar 4, 2013, at 1:22 PM, larry google groups <lawrencecloj...@gmail.com> 
wrote:

> 
>> Be careful with .digest as it implicitly resets the MessageDigest, and
>> calling it a second time gives you the digest of the initial state
>> which is not what you want.
> 
> I am somewhat ignorant of how mutable Java variables behave inside of
> Clojure. Can I assume that the instance of MessageDigest disappears as
> soon as the function returns? If I call the function again, I am
> creating a new instance MessageDigest, and so I don't have to worry
> about calling .digest()?
> 
> 
> 
> On Mar 4, 2:43 pm, Frank Siebenlist <frank.siebenl...@gmail.com>
> wrote:
>> That should work.
>> 
>> No need for .reset though as the initially constructed MessageDigest is 
>> already in its initial state.
>> 
>> Be careful with .digest as it implicitly resets the MessageDigest, and 
>> calling it a second time gives you the digest of the initial state which is 
>> not what you want.
>> 
>> (all that "incidental complexity" is why I started to write that functional 
>> interface ;-) )
>> 
>> -FS.
>> 
>> On Mar 4, 2013, at 11:32 AM, Aaron Cohen <aa...@assonance.org> wrote:
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> Ah darn, thanks for the catch. The following is uglier but should work I 
>>> guess. :\
>> 
>>> digest (.digest
>>>                (doto (java.security.MessageDigest/getInstance "sha1")
>>>                      .reset
>>>                      (.update nonce-bytes)
>>>                      (.update created-bytes)
>>>                      (.update secret-bytes)))
>> 
>>> On Mon, Mar 4, 2013 at 2:25 PM, Frank Siebenlist 
>>> <frank.siebenl...@gmail.com> wrote:
>>>> digest (-> (java.security.MessageDigest/getInstance "sha1")
>>>>                     .reset
>>>>                     (.update nonce-bytes)
>>>>                     (.update create-bytes)
>>>>                     (.update secret-bytes)
>>>>                     .digest)
>> 
>>> There may be an issue with this snippet of code as ".update" does not 
>>> return anything… i.e. nil.
>> 
>>> -FS.
>> 
>>> On Mar 4, 2013, at 11:06 AM, larry google groups 
>>> <lawrencecloj...@gmail.com> wrote:
>> 
>>>>> ;; Should "UsernameToken Username" really be unquoted in the following 
>>>>> line?
>>>>> ;; All the other variable names are quoted
>> 
>>>> Apparently, yes. The developer at Omniture reviewed it and said my
>>>> only problem was the way the passwordDigest was created.
>> 
>>>> On Mar 4, 2:02 pm, Aaron Cohen <aa...@assonance.org> wrote:
>>>>> I think you should try to avoid the string concatenation games. I'm not
>>>>> sure what your current code is, but I suspect you're still ending up with
>>>>> array toString's slipping in.
>> 
>>>>> How about the following?
>> 
>>>>> On Mon, Mar 4, 2013 at 1:31 PM, larry google groups <
>> 
>>>>> lawrencecloj...@gmail.com> wrote:
>>>>>> So, right now I am using this code:
>> 
>>>>>>  (let [username (get-in @um/interactions [:omniture-api-
>>>>>> credentials :username])
>>>>>>   secret (get-in @um/interactions [:omniture-api-credentials :shared-
>>>>>> secret])
>>>>>>   nonce (DigestUtils/md5Hex (str (math/round (* (rand 1 ) 1000000))))
>>>>>>   nonce-encoded-base64 (Base64/encodeBase64 (.getBytes nonce))
>>>>>>   date-formatter (new SimpleDateFormat "yyyy-MM-dd'T'HH:mm:ss")
>>>>>>   formatter gmt-timezone)
>>>>>>   created (.format date-formatter (new Date))
>> 
>>>>>    nonce-bytes (.getBytes nonce)
>>>>>    created-bytes (.getBytes created)
>>>>>    secret-bytes (.getBytes secret)
>>>>>    digest (-> (java.security.MessageDigest/getInstance "sha1")
>>>>>                     .reset
>>>>>                     (.update nonce-bytes)
>>>>>                     (.update create-bytes)
>>>>>                     (.update secret-bytes)
>>>>>                     .digest)
>>>>>     digest-base64 (Base64/encodeBase64 digest)
>> 
>>>>> ;; Should "UsernameToken Username" really be unquoted in the following 
>>>>> line?
>>>>> ;; All the other variable names are quoted
>>>>>     header (apply str " UsernameToken Username=\""  username
>> 
>>>>> ;; You may want digest-base64 here?
>>>>>                               "\"PasswordDigest=\"" digest
>> 
>>>>>                               "\" Nonce=\"" nonce-encoded-base64
>>>>>                               "\"Created=\"" created "\"")]
>>>>>              header)
>> 
>>>> --
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clojure@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+unsubscr...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> ---
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to clojure+unsubscr...@googlegroups.com.
>>>> For more options, visithttps://groups.google.com/groups/opt_out.
>> 
>>> --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google Groups 
>>> "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visithttps://groups.google.com/groups/opt_out.
> 
> -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to