diff options
author | James Walker <walkah@walkah.net> | 2010-02-22 20:56:11 -0500 |
---|---|---|
committer | James Walker <walkah@walkah.net> | 2010-02-22 23:30:31 -0500 |
commit | cb32b676fa4d7e95ec32c3e8968d0ccddbfa42fa (patch) | |
tree | b16405cba56fb518a643ea47a2d02a671994faf2 /plugins/OStatus/lib | |
parent | b67bb182b008b5f7b66d39df7bb8dab449b7002a (diff) |
moving magicsig.php to classes - to add storage
Diffstat (limited to 'plugins/OStatus/lib')
-rw-r--r-- | plugins/OStatus/lib/magicsig.php | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/plugins/OStatus/lib/magicsig.php b/plugins/OStatus/lib/magicsig.php deleted file mode 100644 index 50eb301ab..000000000 --- a/plugins/OStatus/lib/magicsig.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php -/** - * StatusNet - the distributed open-source microblogging tool - * Copyright (C) 2010, StatusNet, Inc. - * - * A sample module to show best practices for StatusNet plugins - * - * PHP version 5 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * @package StatusNet - * @author James Walker <james@status.net> - * @copyright 2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 - * @link http://status.net/ - */ - -require_once 'Crypt/RSA.php'; - -interface Magicsig -{ - - public function sign($bytes); - - public function verify($signed, $signature_b64); -} - -class MagicsigRsaSha256 -{ - - public $keypair; - - public function __construct($init = null) - { - if (is_null($init)) { - $this->generate(); - } else { - $this->fromString($init); - } - } - - - public function generate($key_length = 512) - { - $keypair = new Crypt_RSA_KeyPair($key_length); - $params['public_key'] = $keypair->getPublicKey(); - $params['private_key'] = $keypair->getPrivateKey(); - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $this->keypair = new Crypt_RSA($params); - PEAR::popErrorHandling(); - } - - - public function toString($full_pair = true) - { - $public_key = $this->keypair->_public_key; - $private_key = $this->keypair->_private_key; - - $mod = base64_url_encode($public_key->getModulus()); - $exp = base64_url_encode($public_key->getExponent()); - $private_exp = ''; - if ($full_pair && $private_key->getExponent()) { - $private_exp = '.' . base64_url_encode($private_key->getExponent()); - } - - return 'RSA.' . $mod . '.' . $exp . $private_exp; - } - - public function fromString($text) - { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - - // remove whitespace - $text = preg_replace('/\s+/', '', $text); - - // parse components - if (!preg_match('/RSA\.([^\.]+)\.([^\.]+)(.([^\.]+))?/', $text, $matches)) { - return false; - } - - $mod = base64_url_decode($matches[1]); - $exp = base64_url_decode($matches[2]); - if ($matches[4]) { - $private_exp = base64_url_decode($matches[4]); - } - - $params['public_key'] = new Crypt_RSA_KEY($mod, $exp, 'public'); - if ($params['public_key']->isError()) { - $error = $params['public_key']->getLastError(); - print $error->getMessage(); - exit; - } - if ($private_exp) { - $params['private_key'] = new Crypt_RSA_KEY($mod, $private_exp, 'private'); - if ($params['private_key']->isError()) { - $error = $params['private_key']->getLastError(); - print $error->getMessage(); - exit; - } - } - - $this->keypair = new Crypt_RSA($params); - PEAR::popErrorHandling(); - } - - public function getName() - { - return 'RSA-SHA256'; - } - - public function sign($bytes) - { - $sig = $this->keypair->createSign($bytes, null, 'sha256'); - if ($this->keypair->isError()) { - $error = $this->keypair->getLastError(); - common_log(LOG_DEBUG, 'RSA Error: '. $error->getMessage()); - } - - return $sig; - } - - public function verify($signed_bytes, $signature) - { - $result = $this->keypair->validateSign($signed_bytes, $signature, null, 'sha256'); - if ($this->keypair->isError()) { - $error = $this->keypair->getLastError(); - //common_log(LOG_DEBUG, 'RSA Error: '. $error->getMessage()); - print $error->getMessage(); - } - return $result; - } - -} - -// Define a sha256 function for hashing -// (Crypt_RSA should really be updated to use hash() ) -function sha256($bytes) -{ - return hash('sha256', $bytes); -} - -function base64_url_encode($input) -{ - return strtr(base64_encode($input), '+/', '-_'); -} - -function base64_url_decode($input) -{ - return base64_decode(strtr($input, '-_', '+/')); -}
\ No newline at end of file |