]> git.mxchange.org Git - friendica.git/commitdiff
salmon-magic-public-freaking-nasty-keys
authorMike Macgirvin <mike@macgirvin.com>
Thu, 7 Oct 2010 04:13:15 +0000 (21:13 -0700)
committerMike Macgirvin <mike@macgirvin.com>
Thu, 7 Oct 2010 04:13:15 +0000 (21:13 -0700)
library/asn1.php
mod/modexp.php [new file with mode: 0644]
mod/xrd.php
view/xrd_person.tpl

index 5b1ad3b8fb842b1af72fac865ed4f205125b7d54..132b0324800bf83638c5fb181a8f029ff6c5315b 100644 (file)
@@ -186,7 +186,7 @@ class ASN_BASE {
                        case ASN_BOOLEAN:
                                return new ASN_BOOLEAN((bool)$data);
                        case ASN_INTEGER:
-                               return new ASN_INTEGER(accum($data));
+                               return new ASN_INTEGER(strtr(base64_encode($data),'+/=','-_,'));
 //                             return new ASN_INTEGER(ord($data));
                        case ASN_BIT_STR:
                                return new ASN_BIT_STR(self::parseASNString($data, $level+1, $maxLevels));
@@ -292,12 +292,7 @@ class ASN_BASE {
 
 
 function accum($s) {
-       $len = strlen($s);
-       $result = '';
-       for ($i=0; $i < $len; $i++)  {
-               $cur = substr($s,$i,1);
-               $result .= bin2hex($cur);
-    }
+       $result = strtr(base64_encode($s),'+/=','-_,');
     return $result;
 }
 
diff --git a/mod/modexp.php b/mod/modexp.php
new file mode 100644 (file)
index 0000000..d424b4c
--- /dev/null
@@ -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();
+
+}
\ No newline at end of file
index d36b47519be6cb00a9cb152d0b13439c52eee142..06b2442b233594e597c4a0d2b7674c7caab72ce3 100644 (file)
@@ -22,7 +22,8 @@ function xrd_content(&$a) {
                '$accturi' => $uri,
                '$profile_url' => $a->get_baseurl() . '/profile/' . $r[0]['nickname'],
                '$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;
index b559bfadcd85a8ca4ceb0c1afdc7f4da1c04ad9b..ba9bc64db1e049c4e956e8fd1af84615607315ec 100644 (file)
@@ -15,5 +15,8 @@
     <Link rel='http://webfinger.net/rel/avatar'
           href='$photo' />
     <Link rel="salmon" href="$salmon" />
-
+       <Link rel="magic-public-key" 
+               type="application/magic-public-key"
+               href="$modexp" />
 </XRD>