I worked on a coldfusion implementation of RSA-SHA1 signatures
(calling java methods inside coldfusion itself). Posting it here, in
case someone finds it useful, or if someone cares to embed in the code
itself. Refine it, use it, do it...
cfset rsaPrivateKey = {base 64 string of pkcs8 private key}
cfset rsaPublicKey={base 64 string of x509 public key}
cfset appSignature = #encodePercent(rsa_sha1(rsaPrivateKey,
rsaPublicKey, {url-encoded base signature string}))#
cffunction name=rsa_sha1 returntype=string access=public
descrition=RSA-SHA1 computation based on supplied private key
supplied base signature string. Also verifies generated signatures
thru supplied public key as well.
cfargument name=signKey type=string required=true
hint=base64 formatted PKCS8 private key
cfargument name=signPub type=string required=true
hint=base64 formatted X509 public key
cfargument name=signMessage type=string required=true
hint=msg to sign
cfargument name=sFormat type=string required=false
default=iso-8859-1
cfset var jKey = JavaCast(string, arguments.signKey)
cfset var jPub = JavaCast(string, arguments.signPub)
cfset var jMsg = JavaCast(string,
arguments.signMessage).getBytes(arguments.sFormat)
cfset var key = createObject(java, java.security.PrivateKey)
cfset var keySpec = createObject(java,
java.security.spec.PKCS8EncodedKeySpec)
cfset var pub = createObject(java, java.security.PublicKey)
cfset var pubSpec = createObject(java,
java.security.spec.X509EncodedKeySpec)
cfset var keyFactory = createObject(java,
java.security.KeyFactory)
cfset var b64dec = createObject(java, sun.misc.BASE64Decoder)
cfset var sig = createObject(java, java.security.Signature)
cfset var byteClass = createObject(java, java.lang.Class)
cfset var byteArray = createObject(java,
java.lang.reflect.Array)
cfset byteClass = byteClass.forName(JavaCast(string,
java.lang.Byte))
cfset keyBytes = byteArray.newInstance(byteClass, JavaCast(int,
1024))
cfset keyBytes = b64dec.decodeBuffer(jKey)
cfset pubBytes = byteArray.newInstance(byteClass, JavaCast(int,
1024))
cfset pubBytes = b64dec.decodeBuffer(jPub)
cfset sig = sig.getInstance(SHA1withRSA, SunJSSE)
cfset sig.initSign(keyFactory.getInstance(RSA).generatePrivate
(keySpec.init(keyBytes)))
cfset sig.update(jMsg)
cfset signBytes = sig.sign()
cfset sig.initVerify(keyFactory.getInstance
(RSA).generatePublic(pubSpec.init(pubBytes)))
cfset sig.update(jMsg)
cfset verifyFlag = sig.verify(signBytes)
cfoutputverified = #verifyFlag#br/br//cfoutput
cfreturn ToBase64(signBytes)
/cffunction
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---