1 // copy of code from apache-httpclient 4.5.13 package org.apache.http.impl.auth
2 // changes:
3 // - package name, this header, imports
4 // - expose Type3 message (package-private) so keys can be gathered
5
6 /*
7 * ====================================================================
8 * Licensed to the Apache Software Foundation (ASF) under one
9 * or more contributor license agreements. See the NOTICE file
10 * distributed with this work for additional information
11 * regarding copyright ownership. The ASF licenses this file
12 * to you under the Apache License, Version 2.0 (the
13 * "License");
14 /*-
15 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
16 * WinRM Java Client
17 * ჻჻჻჻჻჻
18 * Copyright 2023 - 2024 Metricshub
19 * ჻჻჻჻჻჻
20 * Licensed under the Apache License, Version 2.0 (the "License");
21 * you may not use this file except in compliance with the License.
22 * You may obtain a copy of the License at
23 *
24 * http://www.apache.org/licenses/LICENSE-2.0
25 *
26 * Unless required by applicable law or agreed to in writing, software
27 * distributed under the License is distributed on an "AS IS" BASIS,
28 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29 * See the License for the specific language governing permissions and
30 * limitations under the License.
31 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
32 */
33 package org.metricshub.winrm.service.client.auth.ntlm;
34
35 import org.apache.http.impl.auth.NTLMEngineException;
36
37 /**
38 * Abstract NTLM authentication engine. The engine can be used to
39 * generate Type1 messages and Type3 messages in response to a Type2 challenge.
40 *
41 * Code from io.cloudsoft.winrm4j.client.ntlm.forks.httpclient.NTLMEngine
42 * release 0.12.3 @link https://github.com/cloudsoft/winrm4j
43 * io.cloudsoft.winrm4j.client.ntlm.forks.httpclient is a fork of apache-httpclient 4.5.13
44 */
45 public interface NTLMEngine {
46 /**
47 * Generates a Type1 message given the domain and workstation.
48 *
49 * @param domain Optional Windows domain name. Can be {@code null}.
50 * @param workstation Optional Windows workstation name. Can be
51 * {@code null}.
52 * @return Type1 message
53 * @throws NTLMEngineException
54 */
55 String generateType1Msg(final String domain, final String workstation) throws NTLMEngineException;
56
57 /**
58 * Generates a Type3 message given the user credentials and the
59 * authentication challenge.
60 *
61 * @param username Windows user name
62 * @param password Password
63 * @param domain Windows domain name
64 * @param workstation Windows workstation name
65 * @param challenge Type2 challenge.
66 * @return Type3 response.
67 * @throws NTLMEngineException
68 */
69 String generateType3Msg(
70 final String username,
71 final String password,
72 final String domain,
73 final String workstation,
74 final String challenge
75 ) throws NTLMEngineException;
76
77 Type3Message generateType3MsgObject(
78 final String username,
79 final String password,
80 final String domain,
81 final String workstation,
82 final String challenge
83 ) throws NTLMEngineException;
84 }