fork download
  1. from Crypto.Signature import PKCS1_v1_5
  2. from Crypto.Hash import SHA256
  3. from Crypto.PublicKey import RSA
  4. from hashlib import sha256
  5. import base64
  6.  
  7. pkey = RSA.importKey('-----BEGIN RSA PRIVATE KEY-----\n'+
  8. 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC6HgFhed/nj1EiVPt7HUTeeO4/uhHPVxqT44QM/6wTry/N3Owux6iNRBXzmWm6o5ydMfmiOy6No+4t+K7qpi69+/whvHOCp08Hu71CI9mN5X1fNyOfKQnQOkiDRKM80ihS8hmWi47tv+RGgmFvOcBUsHeSGf0vZZKkHfa7jagz4vJrHlhDni37ICyhlRo7AUb8qpgZmGgJnqSrEJtyiM3/BJxu/I7PRHF+evQwDEU+hAa8IJJ5kqYspVKx9ebSeqZpIekPfKy+VX/rHKNGdh7EBZDXYknXXDEIr3v0OYCEp+ydG1vojBI7tMEJ+9XJjCsuwviR39cfY4NTpLD9TQ9bAgMBAAECggEAK+Yb6UP33gRd3L0yu+1Ba0AW4g0fWkpvSGanpPFBQztVCTeMtdP+G6PtkZGj8JPawvEgsnVHG72I1msLxuj/qWwgIkzy6eRQrcBIeas/C0sP8T9uNYJWgDjfFadA4X2oaTgVdP7h7Y4PZ9ok5Tk39kHRUjKzF1Tb673tjntxKxt6youX4vInre96h05/yPTQMz03fZCwHZBVa6Dnx0ruJoyqPaS+N6g+qKvKBAdZNZ/q5Bmyat9mWbhEyqX1mB99gPQFzyk9EgUHkYo7IlZzQhRHPY0lTzh1e5/vbk+vdSJhamODUh8JBxhhSonNCIgHajxO8H1jJF3XEjvXsRc4AQKBgQD3tw4GaIq8WErNjTHxihnkQVkIU+NmUXlPVILcKXsJ7EzNc20fbOw1eBvqqPrtbk4JT2XKltzzLfbSRNsAXPtsZqDmqXY788lA3lNy5H+Kr8G2FXtt59DpTEchQrP8vskQtDpFMcI3H9ndD1CIsJGxupod7j1RkQjNpa8vPFbmAQKBgQDAV4wwXEjCjTgARX2BiISpthhQkANpa49woZpPbdcwp9pXeSz/sKup4BufX+UayVYCqF9je7yJAr7ShT0UABg5LKSaV7ty0u0RmNy4Rdl4i8blfeVauH/GdZo38cJ/Bd1s+Km/JT6XiaoP8zLX8ITTcR3v/VthuN3h1Hb7ZTtNWwKBgD4FtlxCZqI71RbcSGn6svrkpb8hCem/cok7Vrx7IlRctuomAWeB5S6KEStS/eje2mkYWRs9ZLr6gjcpiE/x9/2vQJAgU/s00eoNAIXe0lROJ0lI3auqBDO1poWcZuZceolVJtXWXJNixTDFOdvPodsHJrlhwjafAr5Cwrcn+3YBAoGAUbWfb3f0zPlzHeJnc9zMBtC9uZPEb0drUzzDshSGgzv7bIekzyZ9dpgnA+iYCm4XpN9kTn3lVQseh45kqRd1Muy9LHgywI/MeFpJAdtijGxM3XdDNOwGFAgnsLZ6mr2iGEX2zqYC1ht8bHQzWDrsImr+fdJSvMvtLp+0wA18SNsCgYEA4o/e2GjL/nNJiNVfRSzyvtXoGSfF/JstPP5Ng+/+66+xZxL9KHWuJVeY2REV9JEzzzo5s1TI9LQQ+psLrI1HGmF+4TE6m54djgN3xxqE04qdgNqE8rnuJ+IQdJUCl+wl8K2L6PjgvgMliXaq5bzoDEo5cQcT+zv9qHA//ZXinW0==\n'+
  9. '-----END RSA PRIVATE KEY-----')
  10.  
  11.  
  12. path = '/v1.0/hello-world'
  13. timestamp = '1970-01-01T00:00:00+00:00'
  14. payload = '{"foo":"bar"}'
  15. hashedPayload = sha256(payload.encode('utf-8')).hexdigest()
  16. data = 'POST:'+path+':'+hashedPayload+':'+timestamp;
  17. print('string to sign : '+data)
  18.  
  19. signer = PKCS1_v1_5.new(pkey)
  20. digest = SHA256.new()
  21. digest.update(data.encode("utf8"))
  22. result = base64.b64encode(signer.sign(digest))
  23. print('signature : ' +result)
  24.  
Success #stdin #stdout 0.03s 11752KB
stdin
Standard input is empty
stdout
string to sign : POST:/v1.0/hello-world:7a38bf81f383f69433ad6e900d35b3e2385593f76a7b7ab5d4355b8ba41ee24b:1970-01-01T00:00:00+00:00
signature : KjkuOelFE4WWcTcm0EKyqR0446DxV3iUsPbmfVLdrtOjnAXzLDB7GDOL5R1f3WcIv9Wc83/z+OEhlv03gq8WN7X8JAtGX2KmiskNGjLEtdFPqJmJL/ZznZiEzp2Jr1QiyTNxHb42CY8cTRf8KYBe2K+K+jOr9rsHguq4m7RX+fq0Fw8tF/X+pzT3M8BIqqtizPSJHw77apVcyDfPkkT7uRNN32ibnv1bg/FXWBx1U8W/IEEzMqGF+tOWLprp2xt49tu0NfvnTtbhTL6CxI21pQiAoaudDKrcr+gfhjN3+KiXQeUU9Rv0qC4ihumpOwyB2dXmjFJyytCHwGm4cb2HaQ==