* PKIStatusInfo ::= SEQUENCE { * status PKIStatus, * statusString PKIFreeText OPTIONAL, * failInfo PKIFailureInfo OPTIONAL * } * * *
 * PKIStatus ::= INTEGER {
 *      accepted               (0),
 *      grantedWithMods        (1),
 *      rejection              (2),
 *      waiting                (3),
 *      revocationWarning      (4),
 *      revocationNotification (5),
 *      keyUpdateWarning       (6)
 * }
 * 
* *
 * PKIFailureInfo ::= BIT STRING {
 *      badAlg              (0),
 *      badMessageCheck     (1),
 *      badRequest          (2),
 *      badTime             (3),
 *      badCertId           (4),
 *      badDataFormat       (5),
 *      wrongAuthority      (6),
 *      incorrectData       (7),
 *      missingTimeStamp    (8),
 *      badPOP              (9),
 *      certRevoked         (10),
 *      certConfirmed       (11),
 *      wrongIntegrity      (12),
 *      badRecipientNonce   (13),
 *      timeNotAvailable    (14),
 *      unacceptedPolicy    (15),
 *      unacceptedExtension (16),
 *      addInfoNotAvailable (17),
 *      badSenderNonce      (18),
 *      badCertTemplate     (19),
 *      signerNotTrusted    (20),
 *      transactionIdInUse  (21),
 *      unsupportedVersion  (22),
 *      notAuthorized       (23),
 *      systemUnavail       (24),
 *      systemFailure       (25),
 *      duplicateCertReq    (26),
 *      extendLater        (100), -- GuardTime specific extension
 *      extensionOverdue   (101)  -- GuardTime specific extension
 * }
 * 
* *
 * PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
 * 
* * @package asn1 * @subpackage cmp * * @link http://tools.ietf.org/html/rfc4210#section-5.2.3 RFC 4210: Certificate Management Protocol */ class PKIStatusInfo { private $status; private $statusString; private $failInfo; /** * Constructs a new instance of PKIStatusInfo. */ public function __construct() { } /** * Decodes an ASN1Sequence as PKIStatusInfo. * * @throws GTException * @param ASN1Sequence $object PKIStatusInfo encoded as an ASN1Sequence * @return void */ public function decode($object) { if (!$object instanceof ASN1Sequence) { throw new GTException("Expecting an ASN1Sequence"); } $this->status = (int) $object->getObjectAt(0)->getValue(); for ($i = 1; $i < $object->getObjectCount(); $i++) { $item = $object->getObjectAt($i); if ($item instanceof ASN1BitString) { $this->failInfo = $item->getValue(); } else if ($item instanceof ASN1Sequence) { $statusString = array(); foreach ($item->getObjects() as $line) { array_push($statusString, $line->getValue()); } $this->statusString = $statusString; } else { throw new GTException("Unexpected item: " . get_class($item)); } } } /** * Gets the status code. * * @return int status code */ public function getStatus() { return $this->status; } /** * Sets the status code. * * @param int $status * @return void */ public function setStatus($status) { $this->status = $status; } /** * Gets the status message. * * @return string status message */ public function getStatusMessage() { if (!empty($this->statusString)) { return implode("\n", $this->statusString); } return ""; } /** * Gets the failure info bit string. * * @return string failure info bit string */ public function getFailInfo() { return $this->failInfo; } } ?>