/** * Constructor * * @param string ...$certs Base64 encoded DER certificates */ public function __construct(...$certs) { foreach ($certs as $cert) { if (!Base64::isValid($cert)) { throw new \UnexpectedValueException("Certificate must be base64 encoded."); } } parent::__construct(self::PARAM_X509_CERTIFICATE_CHAIN, $certs); }
/** * Get JWT header. * * @return JOSE */ public function header() { $header = Header::fromJSON(Base64::urlDecode($this->_parts[0])); return new JOSE($header); }
/** * Get the parameter value as a decoded string. * * @return string */ public function string() { return Base64::urlDecode($this->value()); }
/** * Convert to compact serialization. * * @return string */ public function toCompact() { return Base64::urlEncode($this->_protectedHeader->toJSON()) . "." . Base64::urlEncode($this->_encryptedKey) . "." . Base64::urlEncode($this->_iv) . "." . Base64::urlEncode($this->_ciphertext) . "." . Base64::urlEncode($this->_authenticationTag); }
/** * Generate input for the signature computation. * * @param string $payload Payload * @param Header $header Protected header * @return string */ protected static function _generateSignatureInput($payload, Header $header) { $b64 = $header->hasB64Payload() ? $header->B64Payload()->value() : true; $data = Base64::urlEncode($header->toJSON()) . "."; $data .= $b64 ? Base64::urlEncode($payload) : $payload; return $data; }
/** * Get coordinate in octet string representation. * * @return string */ public function coordinateOctets() { return Base64::urlDecode($this->_value); }
/** * Get the symmetric key. * * @return string */ public function key() { return Base64::urlDecode($this->keyValueParameter()->value()); }
/** * Get value as a number. * * @return BigInt */ public function number() { return BigInt::fromBase256(Base64::urlDecode($this->value())); }