SCRAMSHA1Mechanism.java

  1. /**
  2.  *
  3.  * Copyright 2014-2017 Florian Schmaus
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *     http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.jivesoftware.smack.sasl.core;

  18. import java.security.InvalidKeyException;

  19. import org.jivesoftware.smack.sasl.SASLMechanism;
  20. import org.jivesoftware.smack.util.MAC;

  21. public class SCRAMSHA1Mechanism extends ScramMechanism {

  22.     static final int PRIORITY = 110;

  23.     static {
  24.         SHA_1_SCRAM_HMAC = new ScramHmac() {
  25.             @Override
  26.             public String getHmacName() {
  27.                 return "SHA-1";
  28.             }
  29.             @Override
  30.             public byte[] hmac(byte[] key, byte[] str) throws InvalidKeyException {
  31.                 return MAC.hmacsha1(key, str);
  32.             }
  33.         };
  34.         NAME = new SCRAMSHA1Mechanism().getName();
  35.     }

  36.     public static final String NAME;

  37.     static final ScramHmac SHA_1_SCRAM_HMAC;

  38.     public SCRAMSHA1Mechanism() {
  39.         super(SHA_1_SCRAM_HMAC);
  40.     }

  41.     @Override
  42.     public int getPriority() {
  43.         return PRIORITY;
  44.     }

  45.     @Override
  46.     protected SASLMechanism newInstance() {
  47.         return new SCRAMSHA1Mechanism();
  48.     }

  49. }