Thank you for the suggestions. If I do this: (let [username (get-in @um/interactions [:omniture-api- credentials :username]) secret (get-in @um/interactions [:omniture-api- credentials :shared-secret]) random-number (math/round (* (rand 1 ) 1000000)) nonce (DigestUtils/md5Hex (str random-number)) nonce-encoded-base64 (base64-encode (.getBytes nonce)) date-formatter (new SimpleDateFormat "yyyy-MM- dd'T'HH:mm:ss") created (.format date-formatter (new Date)) nonce-as-bytes (.getBytes nonce) created-as-bytes (.getBytes created) secret-as-bytes (.getBytes secret) digest (.digest (doto (java.security.MessageDigest/ getInstance "sha1") .reset (.update nonce-as-bytes) (.update created-as-bytes) (.update secret-as- bytes))) ;; ;;digest-base64 (base64-encode (.getBytes digest)) header (apply str " UsernameToken Username=\"" username "\" PasswordDigest=\"" digest "\" Nonce=\"" nonce-encoded- base64 "\" Created=\"" created "\"")] header)
I end up with, in part: PasswordDigest="[B@26f7b2f4" Nonce="Y2MwN2JiYzA5MDlmZjE2ZjExMGYzMjRhODA2Yjc5ODc=" Created="2013-03-04T15:57:52" Which I think is still incorrect. I also tried this with the PasswordDigest base64 encoded, and that did not work either. 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.