public function handleError($line)
    {
        if (stripos($line, 'gpg: WARNING: ') !== false) {
            $this->data['Warnings'][] = substr($line, 14);
        }

        if ($this->errorCode !== Crypt_GPG::ERROR_NONE) {
            return;
        }

        $pattern = '/no valid OpenPGP data found/';
        if (preg_match($pattern, $line) === 1) {
            $this->errorCode = Crypt_GPG::ERROR_NO_DATA;
            return;
        }

        $pattern = '/No secret key|secret key not available/';
        if (preg_match($pattern, $line) === 1) {
            $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
            return;
        }

        $pattern = '/No public key|public key not found/';
        if (preg_match($pattern, $line) === 1) {
            $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
            return;
        }

        $pattern = '/can\'t (?:access|open) `(.*?)\'/';
        if (preg_match($pattern, $line, $matches) === 1) {
            $this->data['ErrorFilename'] = $matches[1];
            $this->errorCode = Crypt_GPG::ERROR_FILE_PERMISSIONS;
            return;
        }

        // GnuPG 2.1: It should return MISSING_PASSPHRASE, but it does not
        // we have to detect it this way. This happens e.g. on private key import
        $pattern = '/key ([0-9A-F]+).* (Bad|No) passphrase/';
        if (preg_match($pattern, $line, $matches) === 1) {
            $keyId = $matches[1];
            // @TODO: Get user name/email
            if (empty($this->data['BadPassphrases'][$keyId])) {
                $this->data['BadPassphrases'][$keyId] = $keyId;
            }

            if ($matches[2] == 'Bad') {
                $this->errorCode = Crypt_GPG::ERROR_BAD_PASSPHRASE;
            } else {
                $this->errorCode = Crypt_GPG::ERROR_MISSING_PASSPHRASE;
                if (empty($this->data['MissingPassphrases'][$keyId])) {
                    $this->data['MissingPassphrases'][$keyId] = $keyId;
                }
            }

            return;
        }

        if ($this->operation == 'gen-key') {
            $pattern = '/:([0-9]+): invalid algorithm$/';
            if (preg_match($pattern, $line, $matches) === 1) {
                $this->errorCode          = Crypt_GPG::ERROR_BAD_KEY_PARAMS;
                $this->data['LineNumber'] = intval($matches[1]);
            }
        }
    }
public function handleError($line)
    {
        if (stripos($line, 'gpg: WARNING: ') !== false) {
            $this->data['Warnings'][] = substr($line, 14);
        }

        if ($this->errorCode !== Crypt_GPG::ERROR_NONE) {
            return;
        }

        $pattern = '/no valid OpenPGP data found/';
        if (preg_match($pattern, $line) === 1) {
            $this->errorCode = Crypt_GPG::ERROR_NO_DATA;
            return;
        }

        $pattern = '/No secret key|secret key not available/';
        if (preg_match($pattern, $line) === 1) {
            $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
            return;
        }

        $pattern = '/No public key|public key not found/';
        if (preg_match($pattern, $line) === 1) {
            $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
            return;
        }

        $pattern = '/can\'t (?:access|open) `(.*?)\'/';
        if (preg_match($pattern, $line, $matches) === 1) {
            $this->data['ErrorFilename'] = $matches[1];
            $this->errorCode = Crypt_GPG::ERROR_FILE_PERMISSIONS;
            return;
        }

        // GnuPG 2.1: It should return MISSING_PASSPHRASE, but it does not
        // we have to detect it this way. This happens e.g. on private key import
        $pattern = '/key ([0-9A-F]+).* (Bad|No) passphrase/';
        if (preg_match($pattern, $line, $matches) === 1) {
            $keyId = $matches[1];
            // @TODO: Get user name/email
            if (empty($this->data['BadPassphrases'][$keyId])) {
                $this->data['BadPassphrases'][$keyId] = $keyId;
            }

            if ($matches[2] == 'Bad') {
                $this->errorCode = Crypt_GPG::ERROR_BAD_PASSPHRASE;
            } else {
                $this->errorCode = Crypt_GPG::ERROR_MISSING_PASSPHRASE;
                if (empty($this->data['MissingPassphrases'][$keyId])) {
                    $this->data['MissingPassphrases'][$keyId] = $keyId;
                }
            }

            return;
        }

        if ($this->operation == 'gen-key') {
            $pattern = '/:([0-9]+): invalid algorithm$/';
            if (preg_match($pattern, $line, $matches) === 1) {
                $this->errorCode          = Crypt_GPG::ERROR_BAD_KEY_PARAMS;
                $this->data['LineNumber'] = intval($matches[1]);
            }
        }
    }
public function handleError ( $ line ) { if ( stripos ( $ line , 'gpg: WARNING: ' ) !== false ) { $ this -> data [ 'Warnings' ] [ ] = substr ( $ line , 14 ) ; } if ( $ this -> errorCode !== Crypt_GPG :: ERROR_NONE ) { return ; } $ pattern = '/no valid OpenPGP data found/' ; if ( preg_match ( $ pattern , $ line ) === 1 ) { $ this -> errorCode = Crypt_GPG :: ERROR_NO_DATA ; return ; } $ pattern = '/No secret key|secret key not available/' ; if ( preg_match ( $ pattern , $ line ) === 1 ) { $ this -> errorCode = Crypt_GPG :: ERROR_KEY_NOT_FOUND ; return ; } $ pattern = '/No public key|public key not found/' ; if ( preg_match ( $ pattern , $ line ) === 1 ) { $ this -> errorCode = Crypt_GPG :: ERROR_KEY_NOT_FOUND ; return ; } $ pattern = '/can\'t (?:access|open) `(.*?)\'/' ; if ( preg_match ( $ pattern , $ line , $ matches ) === 1 ) { $ this -> data [ 'ErrorFilename' ] = $ matches [ 1 ] ; $ this -> errorCode = Crypt_GPG :: ERROR_FILE_PERMISSIONS ; return ; } // GnuPG 2.1: It should return MISSING_PASSPHRASE, but it does not // we have to detect it this way. This happens e.g. on private key import $ pattern = '/key ([0-9A-F]+).* (Bad|No) passphrase/' ; if ( preg_match ( $ pattern , $ line , $ matches ) === 1 ) { $ keyId = $ matches [ 1 ] ; // @TODO: Get user name/email if ( empty ( $ this -> data [ 'BadPassphrases' ] [ $ keyId ] ) ) { $ this -> data [ 'BadPassphrases' ] [ $ keyId ] = $ keyId ; } if ( $ matches [ 2 ] == 'Bad' ) { $ this -> errorCode = Crypt_GPG :: ERROR_BAD_PASSPHRASE ; } else { $ this -> errorCode = Crypt_GPG :: ERROR_MISSING_PASSPHRASE ; if ( empty ( $ this -> data [ 'MissingPassphrases' ] [ $ keyId ] ) ) { $ this -> data [ 'MissingPassphrases' ] [ $ keyId ] = $ keyId ; } } return ; } if ( $ this -> operation == 'gen-key' ) { $ pattern = '/:([0-9]+): invalid algorithm$/' ; if ( preg_match ( $ pattern , $ line , $ matches ) === 1 ) { $ this -> errorCode = Crypt_GPG :: ERROR_BAD_KEY_PARAMS ; $ this -> data [ 'LineNumber' ] = intval ( $ matches [ 1 ] ) ; } } }
Handles error values in the error output from GPG

This method is responsible for setting the
{@link Crypt_GPG_Engine::$_errorCode}.

@param string $line the error line to handle.

@return void
Handles error values in the error output from GPG