Skip to content

Instantly share code, notes, and snippets.

@badri
Created October 10, 2022 10:01
Show Gist options
  • Select an option

  • Save badri/1ae7aa2e9a72c9d4cf79c2cbcfc7d703 to your computer and use it in GitHub Desktop.

Select an option

Save badri/1ae7aa2e9a72c9d4cf79c2cbcfc7d703 to your computer and use it in GitHub Desktop.
sign messages using pub key and priv key
local pkey = require("resty.openssl.pkey")
local base64_decode = ngx.decode_base64
local openssl_x509 = require("resty.openssl.x509")
-- local b64 = "MIIBiTCCAROgAwIBAgICA+gwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLZXhh\nbXBsZS5jb20wHhcNMjIxMDA2MTAwNTQ5WhcNMzIxMDAzMTAwNTQ5WjAWMRQwEgYD\nVQQDDAtleGFtcGxlLmNvbTB8MA0GCSqGSIb3DQEBAQUAA2sAMGgCYQDs9GE3HOar\nEUsjWFATw/+h/73GxarU2/iHFuOTwGeZTCDI+Ay3TRfv+GZVUlSlPUHwuZYqP1++\nrGYcBtrvu78DgYtWsLsEPdcVa6HkeKM6UarN9Q2A5e7gn2zGYWxtpuMCAwEAAaMr\nMCkwDwYDVR0TBAgwBgEB/wIBADAWBgNVHREEDzANggtleGFtcGxlLmNvbTANBgkq\nhkiG9w0BAQsFAANhAERnjq9SMzRGIzOb5N3JAuv1w18GSceKjqNGscisyVkIEWTf\n5hUm2NaVrFA65o7STucxdxN5Y7ydBVvDY+7pA8TicqE36BKwXC3cUU5HGyQw+D1K\ndnff2J0hDORtyhLsxw=="
-- local certstring = "-----BEGIN CERTIFICATE-----\n" .. b64 .. "\n-----END CERTIFICATE-----"
-- local orig_rsa_public_key
-- local cert,err = openssl_x509.new(certstring, "PEM")
-- if not cert then
-- ngx.say("cert not created", err)
-- else
-- -- ngx.say(cert:get_version())
-- local pk1, err = cert:get_pubkey()
-- if not pk1 then
-- ngx.say('no pk ----', err)
-- return
-- else
-- ngx.say('*****')
-- ngx.say(pk1:to_PEM())
-- end
-- end
local msg = [[<Test></Test>]]
-- local k = "MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAOz0YTcc5qsRSyNYUBPD/6H/vcbFqtTb+IcW45PAZ5lMIMj4DLdNF+/4ZlVSVKU9QfC5lio/X76sZhwG2u+7vwOBi1awuwQ91xVroeR4ozpRqs31DYDl7uCfbMZhbG2m4wIDAQAB"
-- local pk_str = "-----BEGIN PUBLIC KEY-----\n" .. k .. "\n-----END PUBLIC KEY-----"
local pk_str = [[-----BEGIN PUBLIC KEY-----
MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAOz0YTcc5qsRSyNYUBPD/6H/vcbFqtTb
+IcW45PAZ5lMIMj4DLdNF+/4ZlVSVKU9QfC5lio/X76sZhwG2u+7vwOBi1awuwQ9
1xVroeR4ozpRqs31DYDl7uCfbMZhbG2m4wIDAQAB
-----END PUBLIC KEY-----]]
ngx.say('####')
ngx.say(pk_str)
local pk, err = pkey.new(pk_str)
if not pk then
ngx.say('no pk ----', err)
return
end
local digest, err = require("resty.openssl.digest").new("SHA256")
digest:update(msg)
local prk_str = [[-----BEGIN RSA PRIVATE KEY-----
MIIBzAIBAAJhAOz0YTcc5qsRSyNYUBPD/6H/vcbFqtTb+IcW45PAZ5lMIMj4DLdN
F+/4ZlVSVKU9QfC5lio/X76sZhwG2u+7vwOBi1awuwQ91xVroeR4ozpRqs31DYDl
7uCfbMZhbG2m4wIDAQABAmEA4IyuW+Ydilu3EuWr7S8+X6zVkTrdKx7SJGLCg9A/
3PxRzWGT21lJp/WENLLy2Cx1L+HOSQ1XVaCUD4KKOY6YpDpPMa6OYBRq+7JhasIc
QtNJk67LQdLsye/XNAWFUB7xAjEA+vPa92brCLMFGQDbZ1GUQe/pfw6eoFWCg9TC
lfaKdDvqd2ygYupMmNxWrSlt11elAjEA8bhzE6sarsTunj0JOBk8MmzGmirP6qTK
lsLMwMehZbCpf4uOGURCwP7K7jkzan3nAjEA98NKrHgwFKaqocT22Urx1SfIoGkO
s7243e9xLh37FEcTdlUJBJ/OgB0KdmwwxisBAjA4R6TrkGwvAwU37Kgn2qBMcU0w
egVc8a+FuKdpv1FR1vcwDjMwqNcODoT7QHA7PEMCMQDvv3k5nFwQ2+wnDGQs00vg
X77tghZPvWmYfMNWKFNCNPz2gJ4YL7jCU3aotyzEDYQ=
-----END RSA PRIVATE KEY-----]]
ngx.say('####')
ngx.say(prk_str)
local prk, err = pkey.new(prk_str)
if not prk then
ngx.say('no pRk ----', err)
return
end
local signature, err = prk:sign(digest)
if not signature then
ngx.say('-- no sigg', err)
end
ngx.say(ngx.encode_base64(signature))
-- local s = "n2eQW4CLddrL3sl7TZREO03psJ8gTV9cdWVvoRhM75Ypa7sKwRmckEw8Pz3CycaZI/or5XQcactY8Lnr2jNaN+ifbJVQQwRguI89VQGI5UsRX9K9ommYqChXSoA4LA0I"
-- local sig = base64_decode(s)
-- local v, err = pk:verify(sig, digest)
-- if v then
-- ngx.say('- OK -')
-- else
-- ngx.say('- NO -', err)
-- end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment