blob: 3d83e98c59fd02680d212a232b8299b3fe08a690 [file]
// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef THIRD_PARTY_CREDENTIO_JUMBF_PARSE_H_
#define THIRD_PARTY_CREDENTIO_JUMBF_PARSE_H_
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "jumbf/box.h"
namespace jumbf {
// Consumes the first serialized JUMBF super_box in `serialized_super_box`.
// Performs only basic validation. Does not check that description boxes
// correspond with content box types. `recursion_limit` is the maximum number of
// levels of super_box that will be parsed. If negative, no limit will be
// enforced. If the limit is reached, the raw content of any further nested
// super_boxes will be returned as `SerializedSuperBox` structs. If parsing is
// not successful, `serialized_super_box` will not be modified.
//
// `allow_implicit_length` determines if boxes may set LBox to 0 to indicate
// that the box extends to the end of the input.
//
// The return value contains references (in the form of `absl::string_view`) to
// the string underlying `serialized_super_box`. Callers must ensure that string
// outlives the return value.
absl::StatusOr<SuperBox> ConsumeSuperBox(
absl::string_view* serialized_super_box, int recursion_limit,
bool allow_implicit_length = true);
} // namespace jumbf
#endif // THIRD_PARTY_CREDENTIO_JUMBF_PARSE_H_