X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOStatus%2Fclasses%2FMagicsig.php;h=c07a082495578790eea86f080323a3d5fbfffa5b;hb=c00491cd7a29a9ef16d6e6bfa54505d4c9a522fe;hp=31d061e6a0148ab90522db25ce3c5f7857440e73;hpb=4b29d0ebb6834cdbd647401e851436b24084dae1;p=quix0rs-gnu-social.git diff --git a/plugins/OStatus/classes/Magicsig.php b/plugins/OStatus/classes/Magicsig.php index 31d061e6a0..c07a082495 100644 --- a/plugins/OStatus/classes/Magicsig.php +++ b/plugins/OStatus/classes/Magicsig.php @@ -33,7 +33,7 @@ if (!defined('STATUSNET')) { require_once 'Crypt/RSA.php'; -class Magicsig extends Memcached_DataObject +class Magicsig extends Managed_DataObject { const PUBLICKEYREL = 'magic-public-key'; @@ -88,16 +88,18 @@ class Magicsig extends Memcached_DataObject * @param mixed $v * @return Magicsig */ - public /*static*/ function staticGet($k, $v=null) + static function getKV($k, $v=null) { - $obj = parent::staticGet(__CLASS__, $k, $v); - if (!empty($obj)) { + $obj = parent::getKV($k, $v); + if ($obj instanceof Magicsig) { + // Please note we're replacing the $obj + // FIXME: There should be an import-key that modifies the fetched $obj $obj = Magicsig::fromString($obj->keypair); - // Double check keys: Crypt_RSA did not - // consistently generate good keypairs. - // We've also moved to 1024 bit keys. - if (strlen($obj->publicKey->modulus->toBits()) != 1024) { + // Never allow less than 1024 bit keys. + // The only case these show up in would be imported or + // legacy very-old-StatusNet generated keypairs. + if (strlen($obj->publicKey->modulus->toBits()) < 1024) { $obj->delete(); return false; } @@ -106,40 +108,21 @@ class Magicsig extends Memcached_DataObject return $obj; } - - function table() + public static function schemaDef() { return array( - 'user_id' => DB_DATAOBJECT_INT, - 'keypair' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, - 'alg' => DB_DATAOBJECT_STR + 'fields' => array( + 'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'user id'), + 'keypair' => array('type' => 'text', 'description' => 'keypair text representation'), + 'alg' => array('type' => 'varchar', 'length' => 64, 'description' => 'algorithm'), + ), + 'primary key' => array('user_id'), + 'foreign keys' => array( + 'magicsig_user_id_fkey' => array('user', array('user_id' => 'id')), + ), ); } - static function schemaDef() - { - return array(new ColumnDef('user_id', 'integer', - null, false, 'PRI'), - new ColumnDef('keypair', 'text', - false, false), - new ColumnDef('alg', 'varchar', - 64, false)); - } - - function keys() - { - return array_keys($this->keyTypes()); - } - - function keyTypes() - { - return array('user_id' => 'K'); - } - - function sequenceKey() { - return array(false, false, false); - } - /** * Save this keypair into the database. * @@ -163,11 +146,11 @@ class Magicsig extends Memcached_DataObject * * @param int $user_id id of local user we're creating a key for */ - public function generate($user_id) + public function generate($user_id, $bits=1024) { $rsa = new Crypt_RSA(); - $keypair = $rsa->createKey(); + $keypair = $rsa->createKey($bits); $rsa->loadKey($keypair['privatekey']);