コード例 #1
0
ファイル: KeyHelper.php プロジェクト: Veivan/WABuh
 public static function generateSignedPreKey($identityKeyPair, $signedPreKeyId)
 {
     $keyPair = Curve::generateKeyPair();
     $signature = Curve::calculateSignature($identityKeyPair->getPrivateKey(), $keyPair->getPublicKey()->serialize());
     $spk = new SignedPreKeyRecord($signedPreKeyId, (int) round(time() * 1000), $keyPair, $signature);
     return $spk;
 }
コード例 #2
0
ファイル: SessionBuilder.php プロジェクト: Veivan/WABuh
 public function processInitKeyExchangeMessage()
 {
     try {
         $sequence = KeyHelper::getRandomSequence(65534) + 1;
         $flags = KeyExchangeMessage::INITIATE_FLAG;
         $baseKey = Curve::generateKeyPair();
         $ratchetKey = Curve::generateKeyPair();
         $identityKey = $this->identityKeyStore->getIdentityKeyPair();
         $baseKeySignature = Curve::calculateSignature($identityKey->getPrivateKey(), $baseKey->getPublicKey()->serialize());
         $sessionRecord = $this->sessionStore->loadSession($this->recipientId, $this->deviceId);
         $sessionRecord->getSessionState()->setPendingKeyExchange($sequence, $baseKey, $ratchetKey, $identityKey);
         $this->sessionStore->storeSession($this->recipientId, $this->deviceId, $sessionRecord);
         return new KeyExchangeMessage(2, $sequence, $flags, $baseKey->getPublicKey(), $baseKeySignature, $ratchetKey->getPublicKey(), $identityKey->getPublicKey());
     } catch (InvalidKeyException $ex) {
         throw new Exception($ex->getMessage());
     }
 }
コード例 #3
0
 private function getSignature($signatureKey, $serialized)
 {
     try {
         return Curve::calculateSignature($signatureKey, $serialized);
     } catch (InvalidKeyException $ex) {
         throw new Exception($ex->getMessage());
     }
 }