.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DBIx::Class::EncodedColumn::Digest 3pm" .TH DBIx::Class::EncodedColumn::Digest 3pm "2019-11-03" "perl v5.30.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBIx::Class::EncodedColumn::Digest \- Digest backend .SH "SYNOPSYS" .IX Header "SYNOPSYS" .Vb 10 \& #SHA\-1 / hex encoding / generate check method \& _\|_PACKAGE_\|_\->add_columns( \& \*(Aqpassword\*(Aq => { \& data_type => \*(AqCHAR\*(Aq, \& size => 40 + 10, \& encode_column => 1, \& encode_class => \*(AqDigest\*(Aq, \& encode_args => { \& algorithm => \*(AqSHA\-1\*(Aq, \& format => \*(Aqhex\*(Aq, \& salt_length => 10, \& charset => \*(Aqutf\-8\*(Aq, \& }, \& encode_check_method => \*(Aqcheck_password\*(Aq, \& } \& \& #SHA\-256 / base64 encoding / generate check method \& _\|_PACKAGE_\|_\->add_columns( \& \*(Aqpassword\*(Aq => { \& data_type => \*(AqCHAR\*(Aq, \& size => 40, \& encode_column => 1, \& encode_class => \*(AqDigest\*(Aq, \& encode_check_method => \*(Aqcheck_password\*(Aq, \& #no encode_args necessary because these are the defaults ... \& } .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" .SH "ACCEPTED ARGUMENTS" .IX Header "ACCEPTED ARGUMENTS" .SS "format" .IX Subsection "format" The encoding to use for the digest. Valid values are 'binary', 'hex', and \&'base64'. Will default to 'base64' if not specified. .SS "algorithm" .IX Subsection "algorithm" The digest algorithm to use for the digest. You may specify any valid Digest algorithm. Examples are \s-1MD5\s0, \s-1SHA\-1\s0, Whirlpool etc. Will default to '\s-1SHA\-256\s0' if not specified. .PP See Digest for supported digest algorithms. .SS "salt_length" .IX Subsection "salt_length" If you would like to use randomly generated salts to encode values make sure this option is set to > 0. Salts will be automatically generated at encode time and will be appended to the end of the digest. Please make sure that you remember to make sure that to expand the size of your db column to have enough space to store both the digest \s-1AND\s0 the salt. Please see list below for common digest lengths. .SS "charset" .IX Subsection "charset" If the string is not restricted to \s-1ASCII,\s0 then you will need to specify a character set encoding. .PP See Encode for a list of encodings. .SH "METHODS" .IX Header "METHODS" .ie n .SS "make_encode_sub $column_name, \e%encode_args" .el .SS "make_encode_sub \f(CW$column_name\fP, \e%encode_args" .IX Subsection "make_encode_sub $column_name, %encode_args" Returns a coderef that takes two arguments, a plaintext value and an optional salt and returns the encoded value with the salt appended to the end of the digest. If a salt is not provided and the salt_length option was greater than zero it will be randomly generated. .ie n .SS "make_check_sub $column_name, \e%encode_args" .el .SS "make_check_sub \f(CW$column_name\fP, \e%encode_args" .IX Subsection "make_check_sub $column_name, %encode_args" Returns a coderef that takes the row object and a plaintext value and will return a boolean if the plaintext matches the encoded value. This is typically used for password authentication. .SH "COMMON DIGEST LENGTHS" .IX Header "COMMON DIGEST LENGTHS" .Vb 10 \& CIPHER | Binary | Base64 | Hex \& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \& | MD2 | 16 | 22 | 32 | \& | MD4 | 16 | 22 | 32 | \& | MD5 | 16 | 22 | 32 | \& | SHA\-1 | 20 | 27 | 40 | \& | SHA\-256 | 32 | 43 | 64 | \& | SHA\-384 | 48 | 64 | 96 | \& | SHA\-512 | 64 | 86 | 128 | \& | CRC\-CCITT | 3 | 2 | 3 | \& | CRC\-16 | 5 | 6 | 4 | \& | CRC\-32 | 10 | 14 | 8 | \& | Adler\-32 | 4 | 6 | 8 | \& | Whirlpool | 64 | 86 | 128 | \& | Haval\-256 | 32 | 44 | 64 | \& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt, DBIx::Class::EncodedColumn, Digest .SH "AUTHOR" .IX Header "AUTHOR" Guillermo Roditi (groditi) .PP Based on the Vienna WoC ToDo manager code by Matt S trout (mst) .SH "CONTRIBUTORS" .IX Header "CONTRIBUTORS" See DBIx::Class::EncodedColumn .SH "LICENSE" .IX Header "LICENSE" This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.