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.