Skip to content

Instantly share code, notes, and snippets.

@andrewschaaf
Created March 15, 2011 17:25
Show Gist options
  • Save andrewschaaf/871082 to your computer and use it in GitHub Desktop.
Save andrewschaaf/871082 to your computer and use it in GitHub Desktop.
node sign/verify test
###
openssl genrsa 4096 > x.pem
openssl req -new -key x.pem -out x.csr
openssl x509 -req -days 365 -in x.csr -signkey x.pem -out x.crt
###
test = (private_key, cert) ->
crypto = require 'crypto'
data = new Buffer "Hello Crypto!"
s = crypto.createSign 'RSA-SHA256'
s.update data
signature = s.sign private_key, 'base64'
console.log "Signature len: #{signature.length}"
v = crypto.createVerify 'RSA-SHA256'
v.update data
verified = v.verify cert, signature, 'base64'
console.log "Verified: #{verified}"
private_key = """
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
"""
cert = """
-----BEGIN CERTIFICATE-----
MIIFBjCCAu4CCQCx7j/hxvaKfzANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMB4XDTExMDMxNTE3MjIyNloXDTEyMDMxNDE3MjIyNlowRTELMAkG
A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
IFdpZGdpdHMgUHR5IEx0ZDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
AOgki7zz3Ctn7elXMRFs6cQUAKt6ZlDg9BquK2M9JKX/aJIYqyMhptG6vSlIU/41
wJkH5g46OUZo1soJUj08RwPq7rMrzzxN+FSJJu+MkxGzx75V7oAHCq8kcAbh/5th
ZzRZdxO7VShuXzZNctANQW0Y987/aIOZWUzpKk8kd6oxDECOds8z+IJVS12iYvnQ
zYL9ta0xm4R9fC8HXPYHVZ2MwlVx1HKItVeH6stPeWW6VUHK2Ru2wfOXZwRsYqMA
cZ90+AyhREqaHsHR2hZ2WcOwChxnC5xab0AHuGAecebbao0Xp04YoDmHte5APWoU
BT9cUr5kknhIY6XwDBvQdQgvn0aIgkOGWjd+mfznye0DQDhvwOjwBA13Ye1ECkKl
/UDfFi7S78IRP2/wUiyAMk2dZxOfUC7Qng/9D3Lfo6IPgCjxTVIUhRVq2VHU7Yca
NnXo2VuBaBPTAQbsMholTsInAdTZxGT6GHV0gNfLOHa/F5EZVeTe26AL2wQHjCKC
oVwmrcW2y96ypTi6Jwubsx5qX/f5UoFn0S3+z4qAvn4r3Bf83x/ly4DkrLiHlQIQ
NZLMpcO25PNXIfPOcaTVkR/9Bpme5lkBWpqk5gvhsxxVDE11iT9kz9WlYGPcBew7
D9GnyJEMvHPT5up+x3WNroNNioB/yOMUjrKI1vAbz/EDAgMBAAEwDQYJKoZIhvcN
AQEFBQADggIBADwNgssSVKplyWWTtIo9iSVH0fkkxuL7lBQuASeHi+KOn1BW16Ag
UmqDpOh5L096XCpSC/g+mLKDeMuJQuFm94kr8hKQ5OX4JR/hwKo9tUwDsGYuSQxE
CairR1KLBzjHpy1IWNuF/TgnP0HM5Yqh3LtBcv06gGguWtVn9kCS9kHYR/kAu6HK
lQLk4e2QaNXxyhCJ5D1A66T9PmH6U+JTs2+oodECl5W96hwG26zMVNr56757k555
DdzEITmVVo/6N9ptAUsXlIWVnYrlTTOqfrsj04Pa3No9FUvP2GxW6tXTwA4h/qqB
Y+7IdmN+CY2oxpI4Mo7BEtAKnwS8ocOBkv6EFovnVBvWTvZ8h/Tmd63VnxsJmsUd
H1ZBpas/VjEZNkWlEzf7ydkO9ciaFmkqwZo/2L/zXmcBFOCXDGnIqvU25hRyxj0e
ILmXUxwvV5dW2YsaEXoamBqK/Q1/Ff5Ucml5IMIiio5JqUwwAO1yTaLWzXdqSo/k
iihHwz2RHrRjgHEmiQ8fO1eWVZRz895LD0HuwJ9BA637GYGTUa2lIFmKSASZIkMF
hWHwhG3F2N5YdKySCSKKp+lYnYOxNqIk0T7Xxknovr4+HBjAnqWa2LtqB/rFN0zm
VTKgYDthM4VpRLeaCoWineXRCdxcIXIghyHW7Bfx9iJLtJO1pRS6BEaD
-----END CERTIFICATE-----
"""
test private_key, cert
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment