1 2 29 30 package com.jcraft.jsch.jce; 31 32 import com.jcraft.jsch.MAC; 33 import javax.crypto.*; 34 import javax.crypto.spec.*; 35 36 public class HMACSHA1 implements MAC{ 37 private static final String name="hmac-sha1"; 38 private static final int bsize=20; 39 private Mac mac; 40 public int getBlockSize(){return bsize;}; 41 public void init(byte[] key) throws Exception { 42 if(key.length>bsize){ 43 byte[] tmp=new byte[bsize]; 44 System.arraycopy(key, 0, tmp, 0, bsize); 45 key=tmp; 46 } 47 SecretKeySpec skey=new SecretKeySpec(key, "HmacSHA1"); 48 mac=Mac.getInstance("HmacSHA1"); 49 mac.init(skey); 50 } 51 private final byte[] tmp=new byte[4]; 52 public void update(int i){ 53 tmp[0]=(byte)(i>>>24); 54 tmp[1]=(byte)(i>>>16); 55 tmp[2]=(byte)(i>>>8); 56 tmp[3]=(byte)i; 57 update(tmp, 0, 4); 58 } 59 60 public void update(byte foo[], int s, int l){ 61 mac.update(foo, s, l); 62 } 63 64 public void doFinal(byte[] buf, int offset){ 65 try{ 66 mac.doFinal(buf, offset); 67 } 68 catch(ShortBufferException e){ 69 } 70 } 71 72 public String getName(){ 73 return name; 74 } 75 } 76 | Popular Tags |