001/* 002 * Copyright 2024 Vonage 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package com.vonage.client.auth; 017 018import com.vonage.client.auth.hashutils.HashUtil; 019import java.util.Map; 020 021public class SignatureAuthMethod extends AbstractApiKeyQueryParamsAuthMethod { 022 private static final int SORT_KEY = 20; 023 024 private final String sigSecret; 025 private final HashUtil.HashType hashType; 026 027 public SignatureAuthMethod(String apiKey, String sigSecret) { 028 this(apiKey, sigSecret, HashUtil.HashType.MD5); 029 } 030 031 public SignatureAuthMethod(String apiKey, String sigSecret, HashUtil.HashType hashType) { 032 super(apiKey); 033 this.sigSecret = sigSecret; 034 this.hashType = hashType; 035 } 036 037 @Override 038 public int getSortKey() { 039 return SORT_KEY; 040 } 041 042 @Override 043 public Map<String, String> getAuthParams(RequestQueryParams requestParams) { 044 Map<String, String> inParams = requestParams.toMap(), outParams = super.getAuthParams(requestParams); 045 inParams.putAll(outParams); 046 outParams.putAll(RequestSigning.getSignatureForRequestParameters(inParams, sigSecret, hashType)); 047 return outParams; 048 } 049}