crumbl 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 96844368eb9bb07b4a3e1b9f465e693e4ceb7968
4
+ data.tar.gz: 1650c8a197aac92dfbf656ee9c94e85fa55ca2a6
5
+ SHA512:
6
+ metadata.gz: 8107ad12dc873a67f434200ff53dd79c1c45075431b8685be13a00387f818e15026eed6431a8c0726f26718a195b1636d91cf2a9e202c699a11d686d5bbf048e
7
+ data.tar.gz: e874767de7015be80554ed2ecb03106a0b92e5f681d236eefa5a4fd8088be7c362513ac20d397cbe9f496de72fba21f49737b72410a199b7ed687fe8da883a27
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'crumbl'
5
+ require 'thor'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'crumbl'
9
+ require 'thor'
10
+ end
11
+
12
+ class CrumblCmd < Thor
13
+ desc "decode [COOKIE]", "Decode a Rails 3 cookie [COOKIE]"
14
+ def decode(cookie)
15
+ Crumbl.decode cookie
16
+ end
17
+
18
+ desc "encode [DATA] [KEY]", "Encode [DATA] as a Rails 3 cookie signed with secret key [KEY]"
19
+ def encode(data, key)
20
+ Crumbl.encode data, key
21
+ end
22
+
23
+ desc "decrypt [COOKIE] [KEY BASE]", "Decrypt Rails 4 [COOKIE] using secret key base [KEY BASE]"
24
+ method_option :iterations, :aliases => "-i", :default => Crumbl::DEFAULT_ITERATIONS, :type => :numeric
25
+ method_option :encrypted_cookie_salt, :aliases => "-e", :default => Crumbl::DEFAULT_ENCRYPTED_COOKIE_SALT
26
+ method_option :encrypted_signed_cookie_salt, :aliases => "-s", :default => Crumbl::DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT
27
+ def decrypt(cookie, secret_key_base)
28
+ Crumbl.decrypt cookie, secret_key_base, options[:iterations], options[:encrypted_cookie_salt], options[:encrypted_signed_cookie_salt]
29
+ end
30
+
31
+ desc "encrypt [DATA] [KEY BASE]", "Encrypt Rails 4 [DATA] using secret key base [KEY BASE]"
32
+ method_option :iterations, :aliases => "-i", :default => Crumbl::DEFAULT_ITERATIONS, :type => :numeric
33
+ method_option :encrypted_cookie_salt, :aliases => "-e", :default => Crumbl::DEFAULT_ENCRYPTED_COOKIE_SALT
34
+ method_option :encrypted_signed_cookie_salt, :aliases => "-s", :default => Crumbl::DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT
35
+ def encrypt(data, secret_key_base)
36
+ Crumbl.encrypt data, secret_key_base, options[:iterations], options[:encrypted_cookie_salt], options[:encrypted_signed_cookie_salt]
37
+ end
38
+ end
39
+
40
+ CrumblCmd.start
@@ -0,0 +1 @@
1
+ require 'crumbl/base'
@@ -0,0 +1,38 @@
1
+ require 'active_support/all'
2
+ require 'rack'
3
+
4
+ class Crumbl
5
+
6
+ DEFAULT_ITERATIONS = 1000
7
+ DEFAULT_ENCRYPTED_COOKIE_SALT = "encrypted cookie"
8
+ DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT = "signed encrypted cookie"
9
+
10
+ def self.decode cookie
11
+ decoded = ::Rack::Session::Cookie::Base64::Marshal.new.decode(cookie)
12
+ puts "Decoded: #{decoded}"
13
+ end
14
+
15
+ def self.encode data, key
16
+ cookie_verifier = ActiveSupport::MessageVerifier.new(key)
17
+ encoded = cookie_verifier.generate data
18
+ puts "Encoded: #{encoded}"
19
+ end
20
+
21
+ def self.decrypt cookie, secret_key_base, iterations=DEFAULT_ITERATIONS, encrypted_cookie_salt=DEFAULT_ENCRYPTED_COOKIE_SALT, encrypted_signed_cookie_salt=DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT
22
+ key_generator = ActiveSupport::KeyGenerator.new(secret_key_base, iterations: iterations)
23
+ secret = key_generator.generate_key(encrypted_cookie_salt)
24
+ sign_secret = key_generator.generate_key(encrypted_signed_cookie_salt)
25
+ encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret)
26
+ decrypted = encryptor.decrypt_and_verify(cookie)
27
+ puts "Decrypted: #{decrypted}"
28
+ end
29
+
30
+ def self.encrypt data, secret_key_base, iterations=DEFAULT_ITERATIONS, encrypted_cookie_salt=DEFAULT_ENCRYPTED_COOKIE_SALT, encrypted_signed_cookie_salt=DEFAULT_ENCRYPTED_SIGNED_COOKIE_SALT
31
+ key_generator = ActiveSupport::KeyGenerator.new(secret_key_base, iterations: iterations)
32
+ secret = key_generator.generate_key(encrypted_cookie_salt)
33
+ sign_secret = key_generator.generate_key(encrypted_signed_cookie_salt)
34
+ encryptor = ActiveSupport::MessageEncryptor.new(secret, sign_secret)
35
+ encrypted = encryptor.encrypt_and_sign(data)
36
+ puts "Encrypted: #{encrypted}"
37
+ end
38
+ end
@@ -0,0 +1,3 @@
1
+ module Crumbl
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crumbl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - David Lanner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 4.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 4.0.0
41
+ description: Command line tool for reading and manipulating encoded or encrypted Rails
42
+ cookies
43
+ email: dhlanner2@gmail.com
44
+ executables:
45
+ - crumbl
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - bin/crumbl
50
+ - lib/crumbl.rb
51
+ - lib/crumbl/base.rb
52
+ - lib/crumbl/version.rb
53
+ homepage: http://rubygems.org/gems/crumbl
54
+ licenses:
55
+ - MIT
56
+ metadata: {}
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ - bin
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.4.2
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: Read and manipulate encoded or encrypted Rails cookies
78
+ test_files: []