001/** 002 * 003 * Copyright 2014-2016 Florian Schmaus 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.jivesoftware.smack.sasl.core; 018 019import java.security.InvalidKeyException; 020 021import org.jivesoftware.smack.sasl.SASLMechanism; 022import org.jivesoftware.smack.util.MAC; 023 024public class SCRAMSHA1Mechanism extends ScramMechanism { 025 026 static { 027 SHA_1_SCRAM_HMAC = new ScramHmac() { 028 @Override 029 public String getHmacName() { 030 return "SHA-1"; 031 } 032 @Override 033 public byte[] hmac(byte[] key, byte[] str) throws InvalidKeyException { 034 return MAC.hmacsha1(key, str); 035 } 036 }; 037 NAME = (new SCRAMSHA1Mechanism()).getName(); 038 } 039 040 public static final String NAME; 041 042 static final ScramHmac SHA_1_SCRAM_HMAC; 043 044 public SCRAMSHA1Mechanism() { 045 super(SHA_1_SCRAM_HMAC); 046 } 047 048 @Override 049 public int getPriority() { 050 return 110; 051 } 052 053 @Override 054 protected SASLMechanism newInstance() { 055 return new SCRAMSHA1Mechanism(); 056 } 057 058}