SATS/lib/cyclic-hash/source/new.php

50 lines
1.2 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/php
<?php
require_once __DIR__.'/../../include/php/const';
function cyclichash_new(){
/* [1] Fetch necessary data
=========================================================*/
/* (1) Fetch secret file */
$secret = @file_get_contents(SECRET_CONF);
/* (2) Check secret file format */
if( !is_string($secret) || !preg_match("/^(.{".SECRET_SIZE."}):(\d+):(.{".SECRET_SIZE."})$/", $secret, $match) ){
2017-01-30 09:59:52 +00:00
slog("Error while reading secret", 'cyclic-hash:new', 'update');
return 127;
}
/* (3) Extract data for hashing from @secret */
$key = (string) $match[1];
$depth = (int) $match[2];
$next = (string) $match[3];
/* (4) Die if not token not changed */
if( $depth > 1 ){
2017-01-30 09:59:52 +00:00
slog("No new secret with $depth depth", 'cyclic-hash:new', 'update');
return 0;
}
/* [2] If hash have just been created (original depth = 1000)
=========================================================*/
/* (1) Return new hash (from @next) */
$newhash = $next;
/* (2) Hash @depth times = 1000 */
for( $d = 0 ; $d < 1000 ; $d++ )
$newhash = hash('sha512', $newhash);
2017-01-30 09:59:52 +00:00
slog("New secret with $depth depth", 'cyclic-hash:new', 'update');
return $newhash;
}
echo cyclichash_new();
?>