From: aaron s. <bei...@gm...> - 2009-08-27 18:33:10
|
perfect. thanks much. On Thu, Aug 27, 2009 at 11:30 AM, Rick Dean<ri...@fd...> wrote: > > Twinkie is a silly placeholder for the string to be signed. > In your case twinkie would be product_code + "," + name, > and needs to be known by the recipient to verify the base32 > string, but is not included therein. > > -- > Rick > > > On Thu, Aug 27, 2009 at 11:13:55AM -0700, aaron smith wrote: >> Hey Dean, thanks for the response. I'll end up using subprocess and >> openssl. One other question. What is "twinkle?" >> >> >> On Tue, Aug 25, 2009 at 9:26 PM, Rick Dean<ri...@fd...> wrote: >> > >> > Strangely, your provided result is an invalid base32 encoding >> > because it's an illegal length. It's not just missing equal >> > signs. >> > >> > So the openssl commands are... >> > >> > $ openssl dsaparam -genkey -out dsa_priv.pem 1024 >> > $ echo twinkie | openssl dgst -dss1 -sign dsa_priv.pem -out foo >> > $ echo twinkie | openssl dgst -dss1 -prverify dsa_priv.pem -signature foo >> > Verified OK >> > >> > pyOpenSSL doesn't yet provide this functionality. You >> > can only sign with x509 certificates, not with just a >> > PKey. Apparently the certificateless signing is provided >> > by EVP_SignFinal() and EVP_VerifyFinal() as seen in >> > openssl-0.9.8j/app/dgst.c >> > >> > In the meantime, the python module called "subprocess" >> > may be of some help. >> > >> > -- >> > Rick >> > >> > >> > On Tue, Aug 25, 2009 at 12:48:19PM -0700, aaron smith wrote: >> >> Thanks for the reply. Ultimately what I'm trying to accomplish is >> >> creating a software license key. >> >> >> >> The full ruby example is this: >> >> >> >> def make_license(product_code, name, copies) >> >> sign_dss1 = OpenSSL::Digest::DSS1.new >> >> priv = OpenSSL::PKey::DSA.new(File.read("lib/dsa_priv.pem")) >> >> b32 = Base32.encode(priv.sign(sign_dss1, >> >> make_license_source(product_code, name))) >> >> # Replace Os with 8s and Is with 9s >> >> # See http://members.shaw.ca/akochoi-old/blog/2004/11-07/index.html >> >> b32.gsub!(/O/, '8') >> >> b32.gsub!(/I/, '9') >> >> # chop off trailing padding >> >> b32.delete("=").scan(/.{1,5}/).join("-") >> >> end >> >> >> >> def make_license_source(product_code, name) >> >> product_code + "," + name >> >> end >> >> >> >> I think what this is doing is creating a new dsa from a private one, >> >> the file (lib/dsa_priv.pem). It converts it to base 32, and adds in >> >> some dashes (-). Which ultimately gives me something like: >> >> "GAWAE-FDWN3-BJHHK-KBGLL-D5SF7-6KHNP-7RWSE-C2FAC-CRR32-QB76K-T3F22-MZFGQ-LV4XA-7X423-6QJY" >> >> >> >> >> >> >> >> >> >> >> >> On Tue, Aug 25, 2009 at 9:13 AM, Rick Dean<ri...@fd...> wrote: >> >> > >> >> > The automated test cases are a good place to look for >> >> > examples. It's a directory named "test" in the pyOpenSSL >> >> > sources. >> >> > >> >> > Some comments about what you are trying to accomplish >> >> > would be useful. I don't know the Ruby API and you >> >> > didn't link to it's docs. >> >> > >> >> > Are you trying to create a DSA certificate? Is "test" the >> >> > common name of the subject for the new certificate being >> >> > created? If so, you need a bunch more stuff than those three >> >> > lines. I attached an example. >> >> > >> >> > -- >> >> > Rick >> >> > >> >> > >> >> > On Mon, Aug 24, 2009 at 10:21:02PM -0700, aaron smith wrote: >> >> >> I'm trying to convert a small snippet of ruby code that handles some >> >> >> ssl stuff for me.. >> >> >> >> >> >> The Ruby code is this: >> >> >> >> >> >> sign_dss1 = OpenSSL::Digest::DSS1.new >> >> >> priv = OpenSSL::PKey::DSA.new(File.read("lib/dsa_priv.pem")) >> >> >> priv.sign(sign_dss1, "test" ) >> >> >> >> >> >> This is somewhat contrived, but this all i'm trying to convert. The >> >> >> docs for pyOpenSSL don't explain that much, so I'm not even sure where >> >> >> to look. >> >> >> >> >> >> Thanks for your help! >> >> >> -A >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day >> >> >> trial. Simplify your report design, integration and deployment - and focus on >> >> >> what you do best, core application coding. Discover what's new with >> >> >> Crystal Reports now. http://p.sf.net/sfu/bobj-july >> >> >> _______________________________________________ >> >> >> pyopenssl-list mailing list >> >> >> pyo...@li... >> >> >> https://lists.sourceforge.net/lists/listinfo/pyopenssl-list >> >> > >> >> > >> > >> > > > -- > Rick > |