// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/40284755): Remove this and spanify to fix the errors. #pragma allow_unsafe_buffers #endif #ifndef NET_NTLM_NTLM_BUFFER_WRITER_H_ #define NET_NTLM_NTLM_BUFFER_WRITER_H_ #include <stddef.h> #include <stdint.h> #include <memory> #include <string> #include "base/containers/span.h" #include "net/base/net_export.h" #include "net/ntlm/ntlm_constants.h" namespace net::ntlm { // Supports various bounds checked low level buffer operations required by an // NTLM implementation. // // The class supports sequential write to an internally managed buffer. All // writes perform bounds checking to ensure enough space is remaining in the // buffer. // // The internal buffer is allocated in the constructor with size |buffer_len| // and owned by the class. // // Write* methods write the buffer at the current cursor position and perform // any necessary type conversion and provide the data in out params. After a // successful write the cursor position is advanced past the written field. // // Failed writes leave the internal cursor at the same position as before the // call. // // Based on [MS-NLMP]: NT LAN Manager (NTLM) Authentication Protocol // Specification version 28.0 [1]. Additional NTLM reference [2]. // // [1] https://msdn.microsoft.com/en-us/library/cc236621.aspx // [2] http://davenport.sourceforge.net/ntlm.html class NET_EXPORT_PRIVATE NtlmBufferWriter { … }; } // namespace net::ntlm #endif // NET_NTLM_NTLM_BUFFER_WRITER_H_