message_verifier.cr alternatives and similar shards
Based on the "Misc" category.
Alternatively, view message_verifier.cr alternatives based on common mentions on social networks and blogs.
-
sentry
Build/Runs your crystal application, watches files, and rebuilds/restarts app on file changes -
guardian
Guardian watches over your files and run assigned tasks. -
neph
A modern command line job processor, similar with make command -
immutable
Thread-safe, persistent, immutable collections for the Crystal language -
crystagiri
An Html parser library for Crystal (like Nokogiri for Ruby) -
crz
Functional programming library for https://github.com/crystal-lang/crystal -
crystal-web-framework-stars
โญ๏ธ Web frameworks for Crystal, most starred on Github -
cron_scheduler
Simple job scheduler with crontab patterns for Crystal Language. -
crystal-futures
Future type implementation for Crystal language -
inflector.cr
Inflector shard for Crystal. A port of ActiveSupport::Inflector -
aasm.cr
:arrows_clockwise: Easy to use finite state machine for Crystal classes -
kreal
Kreal is a model sharing & RPC library built on and works with Kemal seamlessly. -
sslscan.cr
Crystal shard wrapping the rbsec/sslscan utility -
crystal-diff
A Crystal sequence differencing implementation -
lambda.cr
Uniformed function call syntax for Crystal Language. -
retriable.cr
Retriable.cr is a simple DSL to retry failed code blocks -
ulid
Universally Unique Lexicographically Sortable Identifier (ULID) in Crystal -
CrSerializer
Extensible annotation based serialization/deserialization library -
circuit_breaker
Implementation of the circuit breaker pattern in crystal -
burocracia.cr
๐ Zero-dependency Crystal shard to validate, generate and format Brazilian burocracias (CPF, CNPJ, CEP) -
wikicr
Wiki in crystal, using Markdown and Git, inspired by dokuwiki. Last features to build are pretty hard, if you have some time to help... :) -
chalk-box
Terminal string styling done right for crystal-lang -
pinger
Microlibrary to perform ping requests with Crystal Lang -
crystal-binary_parser
Binary parser for Crystal -
m3u8
Generate and parse m3u8 playlists for HTTP Live Streaming (HLS) in Crystal. -
defined
This shard provides facilities for checking whether a constant exists at compile time, and for a variety of different conditional compilation options. Code can be conditionally compiled based on the existence of a constant, version number constraints, or whether an environment variable is set truthy or not. -
atomic_write.cr
Extends `File` to provide `atomic_write()`.
Learn any GitHub repo in 59 seconds
Do you think we are missing an alternative of message_verifier.cr or a related project?
README
message_verifier.cr
Ruby on Rails compatible ActiveSupport::MessageVerifier
implementation for Crystal. Allows verified message passing back and forth between ruby and crystal-lang implementations.
Why? Perhaps you have a microservice written in Crystal and it needs to communicate with a ruby/rails app (or vice-versa), and the data passed between those services needs to be verified to be trustworthy?
Installation
Add this to your application's shard.yml
:
dependencies:
message_verifier:
github: danielwestendorf/message_verifier.cr
Usage
require "message_verifier"
Verify a message
verifier = MessageVerifier::Verifier.new("s3Krit", digest: :sha256)
msg = "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkxTMHRDbTFsYzNOaFoyVTZJRTVsZG1WeUlHZHZibTVoSUdkcGRtVWdlVzkxSUhWd0xDQnVaWFpsY2lCbmIyNXVZU0JzWlhRZ2VXOTFJR1J2ZDI0SyIsImV4cCI6IjIwMTktMDEtMDNUMDA6MjI6MjMuMTc4MDQ0MDAwWiIsInB1ciI6ImV4YW1wbGUifX0=--efc837c7279a1030109ec7519418c8934a2cb38d2ce2882a826acf422e432f5e"
puts "Verified message: #{verifier.verify(msg, purpose: :example, parser: :JSON)}"
Generate a message
verifier = MessageVerifier::Verifier.new("s3Krit", digest: OpenSSL::Algorithm::SHA256)
msg = { "foo" => "bar" }
puts verifier.generate(msg.to_json, purpose: :example, expires_at: Time.now + 1.week, parser: :JSON)
See it in action
Examples of passing messages back and forth between ruby and crystal implementations.
gem install activesupport
if not installed already
$ echo "Very special message" | crystal run examples/sign.cr | ruby examples/verify.rb
$ echo "Some other special message" | ruby examples/sign.rb | crystal run examples/verify.cr
Progress
- [x] Message expiration dates, freshness
- Messages which have expired will return
nil
or raise aMessageVerifier::InvalidSignature
exception
- Messages which have expired will return
- [x] Message purposes
- [x] Message Serializers
- [x] JSON
- [x] YAML
- [x] Signature Digest Algorithms
- [x] All OpenSSL supported algos
- [ ] Rotating keys
Contributing
- Fork it (https://github.com/danielwestendorf/message_verifier.cr/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- danielwestendorf Daniel Westendorf - creator, maintainer