struct Libcrown::Password

Overview

Represents a password line of /etc/shadow.

Defined in:

password.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(crypto : Encryption = Encryption::PasswordLocked, salt : String | Nil = nil, hash : String | Nil = nil, days_last_change : UInt32 | Nil = nil, days_before_change : UInt32 | Nil = 0_u32, days_validity : UInt32 | Nil = 99999_u32, days_expiration_warning : UInt32 | Nil = 7_u32, days_account_disabling_after_expiration : UInt32 | Nil = nil, days_since_account_disabling : UInt32 | Nil = nil) #

Creates a new password.


[View source]
def self.new(password : String, crypto : Encryption = Encryption::SHA512, salt : String | Nil = Random::Secure.base64.rchop.rchop, days_last_change : UInt32 | Nil = (Time.utc - Time::UNIX_EPOCH).days.to_u32) #

Create a new encrypted password.


[View source]

Instance Method Detail

def build(user : String, io : IO) : Nil #

Build the password to the given io.


[View source]
def crypto : Encryption #

Encryption type.


[View source]
def days_account_disabling_after_expiration : UInt32 | Nil #

The number of days after a password expires before the account will be disabled.


[View source]
def days_account_disabling_after_expiration=(days_account_disabling_after_expiration : UInt32 | Nil) #

The number of days after a password expires before the account will be disabled.


[View source]
def days_before_change : UInt32 | Nil #

The minimum number of days that must pass before the password can be changed.


[View source]
def days_before_change=(days_before_change : UInt32 | Nil) #

The minimum number of days that must pass before the password can be changed.


[View source]
def days_expiration_warning : UInt32 | Nil #

The number of days before password expiration during which the user is warned of the impending expiration.


[View source]
def days_expiration_warning=(days_expiration_warning : UInt32 | Nil) #

The number of days before password expiration during which the user is warned of the impending expiration.


[View source]
def days_last_change : UInt32 | Nil #

The number of days since January 1, 1970 (also called the epoch) that the password was last changed.


[View source]
def days_since_account_disabling : UInt32 | Nil #

The date (stored as the number of days since the epoch) since the user account has been disabled.


[View source]
def days_since_account_disabling=(days_since_account_disabling : UInt32 | Nil) #

The date (stored as the number of days since the epoch) since the user account has been disabled.


[View source]
def days_validity : UInt32 | Nil #

The number of days that must pass before the password must be changed.


[View source]
def days_validity=(days_validity : UInt32 | Nil) #

The number of days that must pass before the password must be changed.


[View source]
def encrypt(password : String, crypto : Algorithm = Algorithm::SHA512, salt : String | Nil = Random::Secure.base64.rchop.rchop, days_last_change : UInt32 | Nil = (Time.utc - Time::UNIX_EPOCH).days.to_u32) : UInt32 #

Encrypt a password. Can be used to create or update the password.


[View source]
def hash : String | Nil #

Password's hash.


[View source]
def salt : String | Nil #

Password's salt.


[View source]
def verify(password : String) : Bool #

The password match the encrypted hash.


[View source]