+sub hash_if_unhashed {
+ my ($class, %params) = @_;
+
+ my ($algorithm, $password) = $class->parse($params{password}, 'NONE');
+
+ return $params{password} unless $algorithm eq 'NONE';
+
+ if ($params{look_up_algorithm}) {
+ my $stored_password = $params{auth}->get_stored_password($params{login});
+ my ($stored_algorithm) = $class->parse($stored_password);
+ $params{algorithm} = $stored_algorithm;
+ }
+
+ return $class->hash(%params);
+}
+