No html entities or similar in $cmd that could be exploded and mistaken as a parameter?
Erik Den mandag 30. mars 2015 skrev Blake Ferkingstad <bferkings...@acentek.net> følgende: > Hello everyone, > > > > I have a question on my API Signing code. The code below I have tested on > commands like createDomain, listTemplates, and listServices. Those all run > like expected, but I am running into trouble with createAccount. > > > > function cloudstack_sign_sort($cmd) > > { > > $commands = explode('&', $cmd); > > sort($commands); > > $sort = implode('&', $commands); > > > > return $sort; > > } > > > > function cloudstack_formatCmd($api, $cmd) { > > $str = 'apiKey=' . $api . '&' . $cmd; > > $str = strtolower(cloudstack_sign_sort($str)); > > > > return $str; > > } > > > > function cloudstack_encrypt($cmd, $secret) { > > $hash = hash_hmac('sha1', $cmd, $secret, true); > > $hash = base64_encode($hash); > > > > return urlencode($hash); > > } > > > > function cloudstack_formattedUrl($baseUrl, $api, $cmd, $signature) { > > $url = $baseUrl . '?' . $cmd . '&apiKey=' . $api . '&signature=' . > $signature; > > > > return $url; > > } > > > > function cloudstack_sign($command, $api, $secret, $baseUrl) { > > $clean_command = substr($command, strpos($command, '?')); > > > > $newCmd = cloudstack_formatCmd($api, $clean_command); > > $signature = cloudstack_encrypt($newCmd, $secret); > > $url = cloudstack_formattedUrl($baseUrl, $api, $clean_command, > $signature); > > > > return $url; > > } > > > > When I run the command it returns for createAccount I get 'Error: > 401unable to verify user credentials and/or request signature'. > > > > Is there something wrong with my code? > > > > Thanks, > > Blake Ferkingstad > >