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))
digest-as-string (apply str nonce created secret)
digest (.digest (java.security.MessageDigest/getInstance "sha1")
(.getBytes digest-as-string))
digest-base64 (Base64/encodeBase64 digest)
header (apply str " UsernameToken Username=\"" username "\"
PasswordDigest=\"" digest "\" Nonce=\"" nonce-encoded-base64 "\"
Created=\"" created "\"")]
header)
but when I print the header to the terminal, I still see values that
should be base64 but are not:
PasswordDigest="[B@3652831e" Nonce="[B@631e426e" Created="2\
013-03-04T13:26:21"
The classes I'm using are, I think, fairly standard:
(java.security MessageDigest)
(org.apache.commons.codec.binary Base64)
(org.apache.commons.codec.digest DigestUtils)
What am I doing wrong?
On Mar 4, 1:20 pm, Frank Siebenlist <[email protected]>
wrote:
> Not sure if it's helpful in this context, but I've been playing with a more
> functional
> message-digest/secure-hashing interface recently.
>
> Please take a look at:
>
> https://github.com/franks42/clj.security.message-digest
>
> It's still a little raw, and probably more "educational" than practical right
> now,
> but my hope was that if could clarify some of the message-digesting workings.
>
> Would love to get some feedback...
>
> Enjoy, Frank.
>
> On Mar 4, 2013, at 10:09 AM, larry google groups <[email protected]>
> wrote:
>
>
>
>
>
>
>
> >>> nonce (DigestUtils/md5Hex (random-string 32))
> >>> nonce-encoded-base64 (Base64/encodeBase64 (.getBytes nonce))
>
> >> Is this used somewhere?
>
> > Yes, at the end, everything gets pulled together in a big string,
> > which is added as a header to the POST request:
>
> > header (apply str " UsernameToken Username=\"" username "\"
> > PasswordDigest=\"" digest "\" Nonce=\"" nonce-encoded-base64 "\"
> > Created=\"" created "\"")
>
> > As the developer from Omniture told me:
>
> > "The nonce is transmitted in the header as base64 encoded. However,
> > the digest is formed with the raw binary version (aka decoded) version
> > of the string. The concept you have to understand is that the
> > authorization server is re-performing these critical steps on the back
> > end. If a step isn't done exactly in the client, the digest will
> > mismatch and cause an auth failure."
>
> > On Mar 4, 12:49 pm, Aaron Cohen <[email protected]> wrote:
> >> On Mon, Mar 4, 2013 at 11:12 AM, larry google groups <
>
> >> [email protected]> wrote:
> >>>> expects its argument to be a byte array:
> >>>http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest....
>
> >>>> which can be obtained from a string using String#getBytes.
>
> >>> I appreciate your suggestion. For most of the attempts that I have
> >>> made, I have used this code:
>
> >>> nonce (DigestUtils/md5Hex (random-string 32))
> >>> nonce-encoded-base64 (Base64/encodeBase64 (.getBytes nonce))
>
> >> Is this used somewhere?
>
> >>> date-formatter (new SimpleDateFormat "yyyy-MM-dd'T'HH:mm:ss'Z'")
> >>> created (.format date-formatter (new Date))
> >>> digest-as-string (apply str nonce created secret)
>
> >> (str binary-array) returns the toString of the array, which is something
> >> like "[B@5d5d0293". That has nothing to do with the contents of the array.
> >> I think you want the base64 encoded string here.
>
> >> --Aaron
>
> > --
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.
> > To post to this group, send email to [email protected]
> > Note that posts from new members are moderated - please be patient with
> > your first post.
> > To unsubscribe from this group, send email to
> > [email protected]
> > 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 [email protected].
> > 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.