salmon-magic-public-freaking-nasty-keys
This commit is contained in:
parent
a0ecdd025e
commit
9c10ada906
4 changed files with 41 additions and 9 deletions
|
@ -186,7 +186,7 @@ class ASN_BASE {
|
||||||
case ASN_BOOLEAN:
|
case ASN_BOOLEAN:
|
||||||
return new ASN_BOOLEAN((bool)$data);
|
return new ASN_BOOLEAN((bool)$data);
|
||||||
case ASN_INTEGER:
|
case ASN_INTEGER:
|
||||||
return new ASN_INTEGER(accum($data));
|
return new ASN_INTEGER(strtr(base64_encode($data),'+/=','-_,'));
|
||||||
// return new ASN_INTEGER(ord($data));
|
// return new ASN_INTEGER(ord($data));
|
||||||
case ASN_BIT_STR:
|
case ASN_BIT_STR:
|
||||||
return new ASN_BIT_STR(self::parseASNString($data, $level+1, $maxLevels));
|
return new ASN_BIT_STR(self::parseASNString($data, $level+1, $maxLevels));
|
||||||
|
@ -292,12 +292,7 @@ class ASN_BASE {
|
||||||
|
|
||||||
|
|
||||||
function accum($s) {
|
function accum($s) {
|
||||||
$len = strlen($s);
|
$result = strtr(base64_encode($s),'+/=','-_,');
|
||||||
$result = '';
|
|
||||||
for ($i=0; $i < $len; $i++) {
|
|
||||||
$cur = substr($s,$i,1);
|
|
||||||
$result .= bin2hex($cur);
|
|
||||||
}
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
33
mod/modexp.php
Normal file
33
mod/modexp.php
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include('library/asn1.php');
|
||||||
|
|
||||||
|
function modexp_init(&$a) {
|
||||||
|
|
||||||
|
if($a->argc != 2)
|
||||||
|
killme();
|
||||||
|
|
||||||
|
$nick = $a->argv[1];
|
||||||
|
$r = q("SELECT `pubkey` FROM `user` WHERE `nickname` = '%s' LIMIT 1",
|
||||||
|
dbesc($nick)
|
||||||
|
);
|
||||||
|
|
||||||
|
if(! count($r))
|
||||||
|
killme();
|
||||||
|
|
||||||
|
$lines = explode("\n",$r[0]['pubkey']);
|
||||||
|
unset($lines[0]);
|
||||||
|
unset($lines[count($lines)]);
|
||||||
|
$x = base64_decode(implode('',$lines));
|
||||||
|
|
||||||
|
$r = ASN_BASE::parseASNString($x);
|
||||||
|
|
||||||
|
$m = $r[0]->asnData[1]->asnData[0]->asnData[0]->asnData;
|
||||||
|
$e = $r[0]->asnData[1]->asnData[0]->asnData[1]->asnData;
|
||||||
|
|
||||||
|
header("Content-type: application/magic-public-key");
|
||||||
|
echo 'RSA' . '.' . $m . '.' . $e ;
|
||||||
|
|
||||||
|
killme();
|
||||||
|
|
||||||
|
}
|
|
@ -22,7 +22,8 @@ function xrd_content(&$a) {
|
||||||
'$accturi' => $uri,
|
'$accturi' => $uri,
|
||||||
'$profile_url' => $a->get_baseurl() . '/profile/' . $r[0]['nickname'],
|
'$profile_url' => $a->get_baseurl() . '/profile/' . $r[0]['nickname'],
|
||||||
'$photo' => $a->get_baseurl() . '/photo/profile/' . $r[0]['uid'],
|
'$photo' => $a->get_baseurl() . '/photo/profile/' . $r[0]['uid'],
|
||||||
'$salmon' => $a->get_baseurl() . '/salmon/' . $r[0]['nickname'] . '/mention'
|
'$salmon' => $a->get_baseurl() . '/salmon/' . $r[0]['nickname'] . '/mention',
|
||||||
|
'$modexp' => $a->get_baseurl() . '/modexp/' . $r[0]['nickname']
|
||||||
));
|
));
|
||||||
|
|
||||||
echo $o;
|
echo $o;
|
||||||
|
|
|
@ -15,5 +15,8 @@
|
||||||
<Link rel='http://webfinger.net/rel/avatar'
|
<Link rel='http://webfinger.net/rel/avatar'
|
||||||
href='$photo' />
|
href='$photo' />
|
||||||
<Link rel="salmon" href="$salmon" />
|
<Link rel="salmon" href="$salmon" />
|
||||||
|
<Link rel="magic-public-key"
|
||||||
|
type="application/magic-public-key"
|
||||||
|
href="$modexp" />
|
||||||
|
|
||||||
</XRD>
|
</XRD>
|
||||||
|
|
Loading…
Reference in a new issue