Make Magicsig capable of loading public PKCS1 keys

This commit is contained in:
Mikael Nordfeldth 2015-10-04 17:22:19 +02:00
parent 2970333adb
commit f4ed171397

View File

@ -243,8 +243,8 @@ class Magicsig extends Managed_DataObject
* Fill out $this->privateKey or $this->publicKey with a Crypt_RSA object * Fill out $this->privateKey or $this->publicKey with a Crypt_RSA object
* representing the give key (as mod/exponent pair). * representing the give key (as mod/exponent pair).
* *
* @param string $mod base64-encoded * @param string $mod base64url-encoded
* @param string $exp base64-encoded exponent * @param string $exp base64url-encoded exponent
* @param string $type one of 'public' or 'private' * @param string $type one of 'public' or 'private'
*/ */
public function loadKey($mod, $exp, $type = 'public') public function loadKey($mod, $exp, $type = 'public')
@ -263,6 +263,15 @@ class Magicsig extends Managed_DataObject
} }
} }
public function loadPublicKeyPKCS1($key)
{
$rsa = new Crypt_RSA();
if (!$rsa->setPublicKey($key, CRYPT_RSA_PUBLIC_FORMAT_PKCS1)) {
throw new ServerException('Could not load PKCS1 public key. We probably got this from a remote Diaspora node as the profile public key.');
}
$this->publicKey = $rsa;
}
/** /**
* Returns the name of the crypto algorithm used for this key. * Returns the name of the crypto algorithm used for this key.
* *