rubylibcrack 0.1.1 → 0.2
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.
- data/{README.txt → README} +8 -2
 - data/lib/rubylibcrack.rb +57 -0
 - data/test/test_rubylibcrack.rb +5 -10
 - metadata +66 -42
 - data/History.txt +0 -7
 - data/Manifest.txt +0 -13
 - data/Rakefile +0 -37
 - data/ext/extconf.rb +0 -7
 - data/ext/rubylibcrack.c +0 -49
 
    
        data/{README.txt → README}
    RENAMED
    
    | 
         @@ -11,7 +11,10 @@ A Ruby binding to the password strength checker, libcrack/cracklib. 
     | 
|
| 
       11 
11 
     | 
    
         
             
            == FEATURES/PROBLEMS:
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            A very simple password class with methods, weak? and strong? to check a password.
         
     | 
| 
       14 
     | 
    
         
            -
            A suitable message is provided if the password is weak.
         
     | 
| 
      
 14 
     | 
    
         
            +
            A suitable message is provided if the password is weak. You can pass a path to
         
     | 
| 
      
 15 
     | 
    
         
            +
            a dictionary, but the gem will try to find a default too.
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            Tested on Ruby 1.8, Ruby 1.9 and JRuby 1.2.
         
     | 
| 
       15 
18 
     | 
    
         | 
| 
       16 
19 
     | 
    
         
             
            == SYNOPSIS:
         
     | 
| 
       17 
20 
     | 
    
         | 
| 
         @@ -21,10 +24,12 @@ Usage: 
     | 
|
| 
       21 
24 
     | 
    
         
             
              => true
         
     | 
| 
       22 
25 
     | 
    
         
             
              >> require "rubylibcrack"
         
     | 
| 
       23 
26 
     | 
    
         
             
              => true
         
     | 
| 
       24 
     | 
    
         
            -
              >> my_password = Password.new("hello001")
         
     | 
| 
      
 27 
     | 
    
         
            +
              >> my_password = Cracklib::Password.new("hello001")
         
     | 
| 
       25 
28 
     | 
    
         
             
              => "hello001"
         
     | 
| 
       26 
29 
     | 
    
         
             
              >> my_password.strong?
         
     | 
| 
       27 
30 
     | 
    
         
             
              => false
         
     | 
| 
      
 31 
     | 
    
         
            +
              >> my_password.strong?("/usr/share/cracklib/pw_dict")
         
     | 
| 
      
 32 
     | 
    
         
            +
              => false
         
     | 
| 
       28 
33 
     | 
    
         
             
              >> my_password.message
         
     | 
| 
       29 
34 
     | 
    
         
             
              => "it is based on a dictionary word"
         
     | 
| 
       30 
35 
     | 
    
         | 
| 
         @@ -34,6 +39,7 @@ Usage: 
     | 
|
| 
       34 
39 
     | 
    
         
             
              - Gentoo will have these if cracklib is installed
         
     | 
| 
       35 
40 
     | 
    
         
             
              - Redhat and Fedora will require cracklib-devel
         
     | 
| 
       36 
41 
     | 
    
         
             
              - Ubuntu will require cracklib-devel
         
     | 
| 
      
 42 
     | 
    
         
            +
            * FFI
         
     | 
| 
       37 
43 
     | 
    
         | 
| 
       38 
44 
     | 
    
         
             
            == INSTALL:
         
     | 
| 
       39 
45 
     | 
    
         | 
    
        data/lib/rubylibcrack.rb
    ADDED
    
    | 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'ffi'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Cracklib
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Password
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_reader :message
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                extend FFI::Library
         
     | 
| 
      
 9 
     | 
    
         
            +
                ffi_lib "crack"
         
     | 
| 
      
 10 
     | 
    
         
            +
                attach_function :check, "FascistCheck", [ :string, :string ], :string
         
     | 
| 
      
 11 
     | 
    
         
            +
                POTENTIAL_DICT_PATHS = %w(/usr/share/cracklib/pw_dict /usr/lib/cracklib_dict /usr/lib64/cracklib_dict /var/cache/cracklib/cracklib_dict)
         
     | 
| 
      
 12 
     | 
    
         
            +
                @@dictpath = ""
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                def initialize(password)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @password = password
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def strong?(dictpath = default_dictpath)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  if not valid_dictpath? dictpath
         
     | 
| 
      
 20 
     | 
    
         
            +
                    raise "#{dictpath} is not a valid dictionary path!"
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 23 
     | 
    
         
            +
                    @message = check(@password, dictpath)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    return @message.nil?
         
     | 
| 
      
 25 
     | 
    
         
            +
                  rescue
         
     | 
| 
      
 26 
     | 
    
         
            +
                    return true
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  return false
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def weak?(dictpath = default_dictpath)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  not strong? dictpath
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
                protected
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                def default_dictpath
         
     | 
| 
      
 38 
     | 
    
         
            +
                  if @@dictpath.empty?
         
     | 
| 
      
 39 
     | 
    
         
            +
                    POTENTIAL_DICT_PATHS.each do |path|
         
     | 
| 
      
 40 
     | 
    
         
            +
                      if valid_dictpath? path
         
     | 
| 
      
 41 
     | 
    
         
            +
                        @@dictpath = path
         
     | 
| 
      
 42 
     | 
    
         
            +
                        break
         
     | 
| 
      
 43 
     | 
    
         
            +
                      end
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @@dictpath
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                def valid_dictpath?(dictpath)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  if File.exists? dictpath+'.hwm' and File.exists? dictpath+'.pwi' and File.exists? dictpath+'.pwd'
         
     | 
| 
      
 51 
     | 
    
         
            +
                    true
         
     | 
| 
      
 52 
     | 
    
         
            +
                  else
         
     | 
| 
      
 53 
     | 
    
         
            +
                    false
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
    
        data/test/test_rubylibcrack.rb
    CHANGED
    
    | 
         @@ -1,21 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "test/unit"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              puts "You must build the extension before running these tests. The rake task :test calls the :build_extension task and does all this for you."
         
     | 
| 
       4 
     | 
    
         
            -
              puts 'Alternatively, you can run this command: "cd ext; ruby extconf.rb; make; cd ../"'
         
     | 
| 
       5 
     | 
    
         
            -
              exit 0
         
     | 
| 
       6 
     | 
    
         
            -
            end
         
     | 
| 
       7 
     | 
    
         
            -
            require File.dirname(__FILE__)+"/../ext/rubylibcrack"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.dirname(__FILE__)+"/../lib/rubylibcrack"
         
     | 
| 
       8 
3 
     | 
    
         | 
| 
       9 
4 
     | 
    
         
             
            class PasswordTest < Test::Unit::TestCase
         
     | 
| 
       10 
5 
     | 
    
         
             
              def test_password
         
     | 
| 
       11 
     | 
    
         
            -
                poor_password = Password.new("hello")
         
     | 
| 
       12 
     | 
    
         
            -
                assert_kind_of Password, poor_password
         
     | 
| 
      
 6 
     | 
    
         
            +
                poor_password = Cracklib::Password.new("hello")
         
     | 
| 
      
 7 
     | 
    
         
            +
                assert_kind_of Cracklib::Password, poor_password
         
     | 
| 
       13 
8 
     | 
    
         
             
                assert !poor_password.strong?
         
     | 
| 
       14 
9 
     | 
    
         
             
                assert poor_password.weak?
         
     | 
| 
       15 
10 
     | 
    
         
             
                assert_not_nil poor_password.message
         
     | 
| 
       16 
11 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                good_password = Password.new("jUY d3 i5 gr38")
         
     | 
| 
       18 
     | 
    
         
            -
                assert_kind_of Password, good_password
         
     | 
| 
      
 12 
     | 
    
         
            +
                good_password = Cracklib::Password.new("jUY d3 i5 gr38")
         
     | 
| 
      
 13 
     | 
    
         
            +
                assert_kind_of Cracklib::Password, good_password
         
     | 
| 
       19 
14 
     | 
    
         
             
                assert good_password.strong?
         
     | 
| 
       20 
15 
     | 
    
         
             
                assert !good_password.weak?
         
     | 
| 
       21 
16 
     | 
    
         
             
                assert_nil good_password.message
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,53 +1,77 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
     | 
    
         
            -
            rubygems_version: 0.9.4
         
     | 
| 
       3 
     | 
    
         
            -
            specification_version: 1
         
     | 
| 
       4 
2 
     | 
    
         
             
            name: rubylibcrack
         
     | 
| 
       5 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            email: rubyforge@scottishclimbs.com
         
     | 
| 
       12 
     | 
    
         
            -
            homepage: http://mark.scottishclimbs.com/ (http://www.pccl.info/)
         
     | 
| 
       13 
     | 
    
         
            -
            rubyforge_project: rubylibcrack
         
     | 
| 
       14 
     | 
    
         
            -
            description: A Ruby binding to the password strength checker, libcrack/cracklib.
         
     | 
| 
       15 
     | 
    
         
            -
            autorequire: 
         
     | 
| 
       16 
     | 
    
         
            -
            default_executable: 
         
     | 
| 
       17 
     | 
    
         
            -
            bindir: bin
         
     | 
| 
       18 
     | 
    
         
            -
            has_rdoc: true
         
     | 
| 
       19 
     | 
    
         
            -
            required_ruby_version: !ruby/object:Gem::Version::Requirement 
         
     | 
| 
       20 
     | 
    
         
            -
              requirements: 
         
     | 
| 
       21 
     | 
    
         
            -
              - - ">"
         
     | 
| 
       22 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
         
     | 
| 
       23 
     | 
    
         
            -
                  version: 0.0.0
         
     | 
| 
       24 
     | 
    
         
            -
              version: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 8 
     | 
    
         
            +
              version: "0.2"
         
     | 
| 
       25 
9 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       26 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
       27 
     | 
    
         
            -
            cert_chain: 
         
     | 
| 
       28 
     | 
    
         
            -
            post_install_message: 
         
     | 
| 
       29 
10 
     | 
    
         
             
            authors: 
         
     | 
| 
       30 
     | 
    
         
            -
            - Mark Somerville 
     | 
| 
      
 11 
     | 
    
         
            +
            - Mark Somerville
         
     | 
| 
      
 12 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 13 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 14 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            date: 2010-11-18 00:00:00 +00:00
         
     | 
| 
      
 17 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 18 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 19 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 20 
     | 
    
         
            +
              name: ffi
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 23 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 24 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 25 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 26 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 27 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 30 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 31 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
      
 32 
     | 
    
         
            +
            description: 
         
     | 
| 
      
 33 
     | 
    
         
            +
            email: mark@scottishclimbs.com
         
     | 
| 
      
 34 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 39 
     | 
    
         
            +
            - README
         
     | 
| 
       31 
40 
     | 
    
         
             
            files: 
         
     | 
| 
       32 
     | 
    
         
            -
            -  
     | 
| 
       33 
     | 
    
         
            -
            - Rakefile
         
     | 
| 
       34 
     | 
    
         
            -
            - History.txt
         
     | 
| 
       35 
     | 
    
         
            -
            - Manifest.txt
         
     | 
| 
       36 
     | 
    
         
            -
            - README.txt
         
     | 
| 
       37 
     | 
    
         
            -
            test_files: 
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/rubylibcrack.rb
         
     | 
| 
       38 
42 
     | 
    
         
             
            - test/test_rubylibcrack.rb
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            executables: []
         
     | 
| 
      
 43 
     | 
    
         
            +
            - README
         
     | 
| 
      
 44 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 45 
     | 
    
         
            +
            homepage: http://mark.scottishclimbs.com/
         
     | 
| 
      
 46 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 49 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
       47 
50 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
            -  
     | 
| 
      
 51 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 52 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 53 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 54 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 55 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 56 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 57 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 58 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 59 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 60 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 61 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 62 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 63 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 64 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 65 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 66 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 68 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
       50 
69 
     | 
    
         
             
            requirements: []
         
     | 
| 
       51 
70 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 71 
     | 
    
         
            +
            rubyforge_project: rubylibcrack
         
     | 
| 
      
 72 
     | 
    
         
            +
            rubygems_version: 1.3.7
         
     | 
| 
      
 73 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 74 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 75 
     | 
    
         
            +
            summary: A binding to the *nix password strength checking library, libcrack/cracklib.
         
     | 
| 
      
 76 
     | 
    
         
            +
            test_files: []
         
     | 
| 
       53 
77 
     | 
    
         | 
    
        data/History.txt
    DELETED
    
    
    
        data/Manifest.txt
    DELETED
    
    
    
        data/Rakefile
    DELETED
    
    | 
         @@ -1,37 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'hoe'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class Hoe
         
     | 
| 
       5 
     | 
    
         
            -
              def extra_deps
         
     | 
| 
       6 
     | 
    
         
            -
                @extra_deps.reject do |x|
         
     | 
| 
       7 
     | 
    
         
            -
                  Array(x).first == 'hoe'
         
     | 
| 
       8 
     | 
    
         
            -
                end
         
     | 
| 
       9 
     | 
    
         
            -
              end
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            Hoe.new('rubylibcrack', "0.1.1") do |p|
         
     | 
| 
       13 
     | 
    
         
            -
              p.rubyforge_name = 'rubylibcrack'
         
     | 
| 
       14 
     | 
    
         
            -
              p.author =  p.paragraphs_of('README.txt', 1..1).to_s.strip.sub("By: ", "")
         
     | 
| 
       15 
     | 
    
         
            -
              p.email = 'rubyforge@scottishclimbs.com'
         
     | 
| 
       16 
     | 
    
         
            -
              p.summary = p.paragraphs_of('README.txt', 3).to_s.sub("== DESCRIPTION:", "")
         
     | 
| 
       17 
     | 
    
         
            -
              p.description = p.paragraphs_of('README.txt', 3).to_s.sub("== DESCRIPTION:", "")
         
     | 
| 
       18 
     | 
    
         
            -
              p.url = p.paragraphs_of('README.txt', 2..2).to_s.strip.sub("URL: ", "")
         
     | 
| 
       19 
     | 
    
         
            -
              p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
         
     | 
| 
       20 
     | 
    
         
            -
              p.spec_extras["files"] = [ "ext/rubylibcrack.c", "Rakefile" ]
         
     | 
| 
       21 
     | 
    
         
            -
              p.spec_extras["extensions"] = "ext/extconf.rb"
         
     | 
| 
       22 
     | 
    
         
            -
            end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            desc "Builds the extension"
         
     | 
| 
       25 
     | 
    
         
            -
            task :build_extension do
         
     | 
| 
       26 
     | 
    
         
            -
              system "cd ext; ruby extconf.rb; make; cd ../"
         
     | 
| 
       27 
     | 
    
         
            -
            end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            desc "Cleans the files compiled by build_extension"
         
     | 
| 
       30 
     | 
    
         
            -
            task :clean_extension do
         
     | 
| 
       31 
     | 
    
         
            -
              system "cd ext; rm dictconfig.h rubylibcrack.so rubylibcrack.o Makefile; cd ../"
         
     | 
| 
       32 
     | 
    
         
            -
            end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            desc "Run the unit tests"
         
     | 
| 
       35 
     | 
    
         
            -
            task :test => [ :build_extension ] do
         
     | 
| 
       36 
     | 
    
         
            -
              Rake::Task[ :clean_extension ].invoke
         
     | 
| 
       37 
     | 
    
         
            -
            end
         
     | 
    
        data/ext/extconf.rb
    DELETED
    
    
    
        data/ext/rubylibcrack.c
    DELETED
    
    | 
         @@ -1,49 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #include <ruby.h>
         
     | 
| 
       2 
     | 
    
         
            -
            #include <crack.h>
         
     | 
| 
       3 
     | 
    
         
            -
            #include "dictconfig.h"
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            /*
         
     | 
| 
       6 
     | 
    
         
            -
             * Runs FascistCheck and returns if the password is regarded as weak or not.
         
     | 
| 
       7 
     | 
    
         
            -
             * If it is, the class variable @message is set to the value of the error message.
         
     | 
| 
       8 
     | 
    
         
            -
             */
         
     | 
| 
       9 
     | 
    
         
            -
            static VALUE t_weak(VALUE self)
         
     | 
| 
       10 
     | 
    
         
            -
            {
         
     | 
| 
       11 
     | 
    
         
            -
              char *failure_message;
         
     | 
| 
       12 
     | 
    
         
            -
              failure_message = (char *) FascistCheck(STR2CSTR(self), DICTPATH);
         
     | 
| 
       13 
     | 
    
         
            -
              if(failure_message)
         
     | 
| 
       14 
     | 
    
         
            -
              {
         
     | 
| 
       15 
     | 
    
         
            -
                rb_iv_set(self, "@message", rb_str_new2(failure_message));
         
     | 
| 
       16 
     | 
    
         
            -
                return Qtrue;
         
     | 
| 
       17 
     | 
    
         
            -
              }
         
     | 
| 
       18 
     | 
    
         
            -
              else
         
     | 
| 
       19 
     | 
    
         
            -
              {
         
     | 
| 
       20 
     | 
    
         
            -
                return Qfalse;
         
     | 
| 
       21 
     | 
    
         
            -
              }
         
     | 
| 
       22 
     | 
    
         
            -
            }
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            /*
         
     | 
| 
       25 
     | 
    
         
            -
             * Runs FascistCheck and returns if the password is regarded as strong or not.
         
     | 
| 
       26 
     | 
    
         
            -
             * If it isn't, the class variable @message is set to the value of the error message.
         
     | 
| 
       27 
     | 
    
         
            -
             */
         
     | 
| 
       28 
     | 
    
         
            -
            static VALUE t_strong(VALUE self)
         
     | 
| 
       29 
     | 
    
         
            -
            {
         
     | 
| 
       30 
     | 
    
         
            -
              VALUE weak;
         
     | 
| 
       31 
     | 
    
         
            -
              weak = t_weak(self);
         
     | 
| 
       32 
     | 
    
         
            -
              if(weak == Qtrue)
         
     | 
| 
       33 
     | 
    
         
            -
              {
         
     | 
| 
       34 
     | 
    
         
            -
                return Qfalse;
         
     | 
| 
       35 
     | 
    
         
            -
              }
         
     | 
| 
       36 
     | 
    
         
            -
              else
         
     | 
| 
       37 
     | 
    
         
            -
              {
         
     | 
| 
       38 
     | 
    
         
            -
                return Qtrue;
         
     | 
| 
       39 
     | 
    
         
            -
              }
         
     | 
| 
       40 
     | 
    
         
            -
            }
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            VALUE cPassword;
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            void Init_rubylibcrack() {
         
     | 
| 
       45 
     | 
    
         
            -
              cPassword = rb_define_class("Password", rb_cString);
         
     | 
| 
       46 
     | 
    
         
            -
              rb_define_attr(cPassword, "message", 1, 0);
         
     | 
| 
       47 
     | 
    
         
            -
              rb_define_method(cPassword, "weak?", t_weak, 0);
         
     | 
| 
       48 
     | 
    
         
            -
              rb_define_method(cPassword, "strong?", t_strong, 0);
         
     | 
| 
       49 
     | 
    
         
            -
            }
         
     |