| 
|   | TimeBasedOTP () | 
|   | 
|   | TimeBasedOTP (String algorithm, int numberDigits, int timeIntervalInSeconds, int lookAheadWindow) | 
|   | 
| String  | generateTOTP (String secretKey) | 
|   | 
| boolean  | validateTOTP (String token, byte[] secret) | 
|   | 
| void  | setCalendar (Calendar calendar) | 
|   | 
| String  | generateHOTP (String key, int counter) | 
|   | 
| int  | validateHOTP (String token, String key, int counter) | 
|   | 
| String  | generateOTP (String key, String counter, int returnDigits, String crypto) | 
|   | 
TOTP: Time-based One-time Password Algorithm Based on http://tools.ietf.org/html/draft-mraihi-totp-timebased-06
- 著者
 - anil saldhana 
 
- から
 - Sep 20, 2010 
 
 
◆ TimeBasedOTP() [1/2]
  
  
      
        
          | org.keycloak.models.utils.TimeBasedOTP.TimeBasedOTP  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
static final int DEFAULT_DELAY_WINDOW
Definition: TimeBasedOTP.java:33
 
static final int DEFAULT_INTERVAL_SECONDS
Definition: TimeBasedOTP.java:32
 
static final String DEFAULT_ALGORITHM
Definition: HmacOTP.java:33
 
static final int DEFAULT_NUMBER_DIGITS
Definition: HmacOTP.java:34
 
 
 
 
◆ TimeBasedOTP() [2/2]
  
  
      
        
          | org.keycloak.models.utils.TimeBasedOTP.TimeBasedOTP  | 
          ( | 
          String  | 
          algorithm,  | 
         
        
           | 
           | 
          int  | 
          numberDigits,  | 
         
        
           | 
           | 
          int  | 
          timeIntervalInSeconds,  | 
         
        
           | 
           | 
          int  | 
          lookAheadWindow  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
- 引数
 - 
  
    | algorithm | the encryption algorithm  | 
    | numberDigits | the number of digits for tokens  | 
    | timeIntervalInSeconds | the number of seconds a token is valid  | 
    | lookAheadWindow | the number of previous intervals that should be used to validate tokens.  | 
  
   
   49         this.
clock = 
new Clock(timeIntervalInSeconds);
 Clock clock
Definition: TimeBasedOTP.java:35
 
final String algorithm
Definition: HmacOTP.java:37
 
final int numberDigits
Definition: HmacOTP.java:38
 
final int lookAheadWindow
Definition: HmacOTP.java:39
 
 
 
 
◆ generateHOTP()
  
  
      
        
          | String org.keycloak.models.utils.HmacOTP.generateHOTP  | 
          ( | 
          String  | 
          key,  | 
         
        
           | 
           | 
          int  | 
          counter  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineinherited   | 
  
 
   59         String steps = Integer.toHexString(counter).toUpperCase();
    62         while (steps.length() < 16)
 final String algorithm
Definition: HmacOTP.java:37
 
final int numberDigits
Definition: HmacOTP.java:38
 
String generateOTP(String key, String counter, int returnDigits, String crypto)
Definition: HmacOTP.java:100
 
 
 
 
◆ generateOTP()
  
  
      
        
          | String org.keycloak.models.utils.HmacOTP.generateOTP  | 
          ( | 
          String  | 
          key,  | 
         
        
           | 
           | 
          String  | 
          counter,  | 
         
        
           | 
           | 
          int  | 
          returnDigits,  | 
         
        
           | 
           | 
          String  | 
          crypto  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineinherited   | 
  
 
This method generates an OTP value for the given set of parameters.
- 引数
 - 
  
    | key | the shared secret, HEX encoded  | 
    | counter | a value that reflects a time  | 
    | returnDigits | number of digits to return  | 
    | crypto | the crypto function to use  | 
  
   
- 戻り値
 - A numeric String in base 10 that includes return digits 
 
- 例外
 - 
  
    | java.security.GeneralSecurityException |  | 
  
   
  101         String result = null;
   107         while (counter.length() < 16)
   108             counter = 
"0" + counter;
   115         byte[] k = key.getBytes();
   120         int offset = hash[hash.length - 1] & 0xf;
   122         int binary = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) | ((hash[offset + 2] & 0xff) << 8)
   123                 | (hash[offset + 3] & 0xff);
   127         result = Integer.toString(otp);
   129         while (result.length() < returnDigits) {
   130             result = 
"0" + result;
 byte [] hexStr2Bytes(String hex)
Definition: HmacOTP.java:170
 
byte [] hmac_sha1(String crypto, byte[] keyBytes, byte[] text)
Definition: HmacOTP.java:147
 
static final int [] DIGITS_POWER
Definition: HmacOTP.java:36
 
 
 
 
◆ generateSecret()
  
  
      
        
          | static String org.keycloak.models.utils.HmacOTP.generateSecret  | 
          ( | 
          int  | 
          length | ) | 
           | 
         
       
   | 
  
inlinestaticinherited   | 
  
 
   48         String chars = 
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW1234567890";
    49         SecureRandom r = 
new SecureRandom();
    50         StringBuilder sb = 
new StringBuilder();
    51         for (
int i = 0; i < length; i++) {
    52             char c = chars.charAt(r.nextInt(chars.length()));
  
 
 
◆ generateTOTP()
  
  
      
        
          | String org.keycloak.models.utils.TimeBasedOTP.generateTOTP  | 
          ( | 
          String  | 
          secretKey | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Generates a token.
- 引数
 - 
  
    | secretKey | the secret key to derive the token from.  | 
  
   
   60         String steps = Long.toHexString(T).toUpperCase();
    63         while (steps.length() < 16)
 long getCurrentInterval()
Definition: TimeBasedOTP.java:109
 
Clock clock
Definition: TimeBasedOTP.java:35
 
final String algorithm
Definition: HmacOTP.java:37
 
final int numberDigits
Definition: HmacOTP.java:38
 
String generateOTP(String key, String counter, int returnDigits, String crypto)
Definition: HmacOTP.java:100
 
 
 
 
◆ setCalendar()
  
  
      
        
          | void org.keycloak.models.utils.TimeBasedOTP.setCalendar  | 
          ( | 
          Calendar  | 
          calendar | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Clock clock
Definition: TimeBasedOTP.java:35
 
void setCalendar(Calendar calendar)
Definition: TimeBasedOTP.java:119
 
 
 
 
◆ validateHOTP()
  
  
      
        
          | int org.keycloak.models.utils.HmacOTP.validateHOTP  | 
          ( | 
          String  | 
          token,  | 
         
        
           | 
           | 
          String  | 
          key,  | 
         
        
           | 
           | 
          int  | 
          counter  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlineinherited   | 
  
 
- 引数
 - 
  
  
 
- 戻り値
 - -1 if not a match. A positive number means successful validation. This positive number is also the new value of the counter 
 
   78         int newCounter = counter;
    79         for (newCounter = counter; newCounter <= counter + 
lookAheadWindow; newCounter++) {
    81             if (candidate.equals(token)) {
    82                 return newCounter + 1;
 final int lookAheadWindow
Definition: HmacOTP.java:39
 
String generateHOTP(String key, int counter)
Definition: HmacOTP.java:58
 
 
 
 
◆ validateTOTP()
  
  
      
        
          | boolean org.keycloak.models.utils.TimeBasedOTP.validateTOTP  | 
          ( | 
          String  | 
          token,  | 
         
        
           | 
           | 
          byte []  | 
          secret  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
Validates a token using a secret key.
- 引数
 - 
  
    | token | OTP string to validate  | 
    | secret | Shared secret  | 
  
   
- 戻り値
 
   80             String steps = Long.toHexString(currentInterval - i).toUpperCase();
    83             while (steps.length() < 16)
    88             if (candidate.equals(token)) {
 long getCurrentInterval()
Definition: TimeBasedOTP.java:109
 
Clock clock
Definition: TimeBasedOTP.java:35
 
final String algorithm
Definition: HmacOTP.java:37
 
final int numberDigits
Definition: HmacOTP.java:38
 
final int lookAheadWindow
Definition: HmacOTP.java:39
 
String generateOTP(String key, String counter, int returnDigits, String crypto)
Definition: HmacOTP.java:100
 
 
 
 
◆ algorithm
  
  
      
        
          | final String org.keycloak.models.utils.HmacOTP.algorithm | 
         
       
   | 
  
protectedinherited   | 
  
 
 
◆ clock
  
  
      
        
          | Clock org.keycloak.models.utils.TimeBasedOTP.clock | 
         
       
   | 
  
private   | 
  
 
 
◆ DEFAULT_ALGORITHM
  
  
      
        
          | final String org.keycloak.models.utils.HmacOTP.DEFAULT_ALGORITHM = HMAC_SHA1 | 
         
       
   | 
  
staticinherited   | 
  
 
 
◆ DEFAULT_DELAY_WINDOW
  
  
      
        
          | final int org.keycloak.models.utils.TimeBasedOTP.DEFAULT_DELAY_WINDOW = 1 | 
         
       
   | 
  
static   | 
  
 
 
◆ DEFAULT_INTERVAL_SECONDS
  
  
      
        
          | final int org.keycloak.models.utils.TimeBasedOTP.DEFAULT_INTERVAL_SECONDS = 30 | 
         
       
   | 
  
static   | 
  
 
 
◆ DEFAULT_NUMBER_DIGITS
  
  
      
        
          | final int org.keycloak.models.utils.HmacOTP.DEFAULT_NUMBER_DIGITS = 6 | 
         
       
   | 
  
staticinherited   | 
  
 
 
◆ HMAC_SHA1
  
  
      
        
          | final String org.keycloak.models.utils.HmacOTP.HMAC_SHA1 = "HmacSHA1" | 
         
       
   | 
  
staticinherited   | 
  
 
 
◆ HMAC_SHA256
  
  
      
        
          | final String org.keycloak.models.utils.HmacOTP.HMAC_SHA256 = "HmacSHA256" | 
         
       
   | 
  
staticinherited   | 
  
 
 
◆ HMAC_SHA512
  
  
      
        
          | final String org.keycloak.models.utils.HmacOTP.HMAC_SHA512 = "HmacSHA512" | 
         
       
   | 
  
staticinherited   | 
  
 
 
◆ lookAheadWindow
  
  
      
        
          | final int org.keycloak.models.utils.HmacOTP.lookAheadWindow | 
         
       
   | 
  
protectedinherited   | 
  
 
 
◆ numberDigits
  
  
      
        
          | final int org.keycloak.models.utils.HmacOTP.numberDigits | 
         
       
   | 
  
protectedinherited   | 
  
 
 
このクラス詳解は次のファイルから抽出されました:
- D:/AppData/doxygen/keycloak/oidc-service/src/main/java/org/keycloak/models/utils/TimeBasedOTP.java