1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
# OpenSSL::SignatureAlgorithm
> ECDSA, RSA-PSS and RSA-PKCS#1 signature algorithms for ruby
Sign and verify using signature algorithm wrappers, instead of key objects.
Provides `OpenSSL::SignatureAlgorithm::ECDSA`, `OpenSSL::SignatureAlgorithm::RSAPSS`
and `OpenSSL::SignatureAlgorithm::RSAPKCS1` ruby object wrappers on top of `OpenSSL::PKey::EC`
and `OpenSSL::PKey::RSA`, so that you can reason in terms of the algorithms and do less when
signing or verifying signatures.
[](https://rubygems.org/gems/openssl-signature_algorithm)
[](https://travis-ci.org/cedarcode/openssl-signature_algorithm)
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'openssl-signature_algorithm'
```
And then execute:
$ bundle install
Or install it yourself as:
$ gem install openssl-signature_algorithm
## Usage
### ECDSA
```ruby
to_be_signed = "to-be-signed"
# Signer
algorithm = OpenSSL::SignatureAlgorithm::ECDSA.new
signing_key = algorithm.generate_signing_key
signature = algorithm.sign(to_be_signed)
# Signer sends verify key to Verifier
verify_key_string = signing_key.verify_key.serialize
# Verifier
verify_key = OpenSSL::SignatureAlgorithm::ECDSA::VerifyKey.deserialize(verify_key_string)
algorithm = OpenSSL::SignatureAlgorithm::ECDSA.new
algorithm.verify_key = verify_key
algorithm.verify(signature, to_be_signed)
```
### RSA-PSS
```ruby
to_be_signed = "to-be-signed"
# Signer
algorithm = OpenSSL::SignatureAlgorithm::RSAPSS.new
signing_key = algorithm.generate_signing_key
signature = algorithm.sign(to_be_signed)
# Signer sends verify key to Verifier
verify_key_string = signing_key.verify_key.serialize
# Verifier
verify_key = OpenSSL::SignatureAlgorithm::RSAPSS::VerifyKey.deserialize(verify_key_string)
algorithm = OpenSSL::SignatureAlgorithm::RSAPSS.new
algorithm.verify_key = verify_key
algorithm.verify(signature, to_be_signed)
```
### RSA-PKCS1_v1.5
```ruby
to_be_signed = "to-be-signed"
# Signer
algorithm = OpenSSL::SignatureAlgorithm::RSAPKCS1.new
signing_key = algorithm.generate_signing_key
signature = algorithm.sign(to_be_signed)
# Signer sends verify key to Verifier
verify_key_string = signing_key.verify_key.serialize
# Verifier
verify_key = OpenSSL::SignatureAlgorithm::RSAPKCS1::VerifyKey.deserialize(verify_key_string)
algorithm = OpenSSL::SignatureAlgorithm::RSAPKCS1.new
algorithm.verify_key = verify_key
algorithm.verify(signature, to_be_signed)
```
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/cedarcode/openssl-signature_algorithm.
|