gluu
公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.xdi.oxauth.model.jws.HMACSigner クラス
org.xdi.oxauth.model.jws.HMACSigner の継承関係図
Inheritance graph
org.xdi.oxauth.model.jws.HMACSigner 連携図
Collaboration graph

公開メンバ関数

 HMACSigner (SignatureAlgorithm signatureAlgorithm, String sharedSecret)
 
String generateSignature (String signingInput) throws SignatureException
 
boolean validateSignature (String signingInput, String signature) throws SignatureException
 
SignatureAlgorithm getSignatureAlgorithm ()
 
Jwt sign (Jwt jwt) throws InvalidJwtException, SignatureException
 
boolean validate (Jwt jwt)
 
boolean validateAuthorizationCode (String authorizationCode, Jwt idToken)
 
boolean validateAccessToken (String accessToken, Jwt idToken)
 

非公開変数類

String sharedSecret
 

詳解

著者
Javier Rojas Blum
バージョン
July 31, 2016

構築子と解体子

◆ HMACSigner()

org.xdi.oxauth.model.jws.HMACSigner.HMACSigner ( SignatureAlgorithm  signatureAlgorithm,
String  sharedSecret 
)
inline
30  {
31  super(signatureAlgorithm);
33  }
String sharedSecret
Definition: HMACSigner.java:28
SignatureAlgorithm signatureAlgorithm
Definition: AbstractJwsSigner.java:30

関数詳解

◆ generateSignature()

String org.xdi.oxauth.model.jws.HMACSigner.generateSignature ( String  signingInput) throws SignatureException
inline
36  {
37  if (getSignatureAlgorithm() == null) {
38  throw new SignatureException("The signature algorithm is null");
39  }
40  if (sharedSecret == null) {
41  throw new SignatureException("The shared secret is null");
42  }
43  if (signingInput == null) {
44  throw new SignatureException("The signing input is null");
45  }
46 
47  String algorithm;
48  switch (getSignatureAlgorithm()) {
49  case HS256:
50  algorithm = "HMACSHA256";
51  break;
52  case HS384:
53  algorithm = "HMACSHA384";
54  break;
55  case HS512:
56  algorithm = "HMACSHA512";
57  break;
58  default:
59  throw new SignatureException("Unsupported signature algorithm");
60  }
61 
62  try {
63  SecretKey secretKey = new SecretKeySpec(sharedSecret.getBytes(Util.UTF8_STRING_ENCODING), algorithm);
64  Mac mac = Mac.getInstance(algorithm);
65  mac.init(secretKey);
66  byte[] sig = mac.doFinal(signingInput.getBytes(Util.UTF8_STRING_ENCODING));
67  return Base64Util.base64urlencode(sig);
68  } catch (NoSuchAlgorithmException e) {
69  throw new SignatureException(e);
70  } catch (InvalidKeyException e) {
71  throw new SignatureException(e);
72  } catch (UnsupportedEncodingException e) {
73  throw new SignatureException(e);
74  } catch (Exception e) {
75  throw new SignatureException(e);
76  }
77  }
String sharedSecret
Definition: HMACSigner.java:28
SignatureAlgorithm getSignatureAlgorithm()
Definition: AbstractJwsSigner.java:37

◆ getSignatureAlgorithm()

SignatureAlgorithm org.xdi.oxauth.model.jws.AbstractJwsSigner.getSignatureAlgorithm ( )
inlineinherited

org.xdi.oxauth.model.jws.JwsSignerを実装しています。

37  {
38  return signatureAlgorithm;
39  }
SignatureAlgorithm signatureAlgorithm
Definition: AbstractJwsSigner.java:30

◆ sign()

Jwt org.xdi.oxauth.model.jws.AbstractJwsSigner.sign ( Jwt  jwt) throws InvalidJwtException, SignatureException
inlineinherited

org.xdi.oxauth.model.jws.JwsSignerを実装しています。

42  {
43  String signature = generateSignature(jwt.getSigningInput());
44  jwt.setEncodedSignature(signature);
45  return jwt;
46  }
abstract String generateSignature(String signingInput)

◆ validate()

boolean org.xdi.oxauth.model.jws.AbstractJwsSigner.validate ( Jwt  jwt)
inlineinherited

org.xdi.oxauth.model.jws.JwsSignerを実装しています。

49  {
50  try {
51  String signingInput = jwt.getSigningInput();
52  String signature = jwt.getEncodedSignature();
53 
54  return validateSignature(signingInput, signature);
55  } catch (InvalidJwtException e) {
56  LOG.error(e.getMessage(), e);
57  return false;
58  } catch (SignatureException e) {
59  LOG.error(e.getMessage(), e);
60  return false;
61  } catch (Exception e) {
62  LOG.error(e.getMessage(), e);
63  return false;
64  }
65  }
abstract boolean validateSignature(String signingInput, String signature)
static final Logger LOG
Definition: AbstractJwsSigner.java:28

◆ validateAccessToken()

boolean org.xdi.oxauth.model.jws.AbstractJwsSigner.validateAccessToken ( String  accessToken,
Jwt  idToken 
)
inlineinherited
71  {
72  return validateHash(accessToken, idToken.getClaims().getClaimAsString(JwtClaimName.ACCESS_TOKEN_HASH));
73  }
boolean validateHash(String tokenCode, String tokenHash)
Definition: AbstractJwsSigner.java:75

◆ validateAuthorizationCode()

boolean org.xdi.oxauth.model.jws.AbstractJwsSigner.validateAuthorizationCode ( String  authorizationCode,
Jwt  idToken 
)
inlineinherited
67  {
68  return validateHash(authorizationCode, idToken.getClaims().getClaimAsString(JwtClaimName.CODE_HASH));
69  }
boolean validateHash(String tokenCode, String tokenHash)
Definition: AbstractJwsSigner.java:75

◆ validateSignature()

boolean org.xdi.oxauth.model.jws.HMACSigner.validateSignature ( String  signingInput,
String  signature 
) throws SignatureException
inline
80  {
81  String expectedSignature = generateSignature(signingInput);
82  return StringUtils.nullToEmpty(signature).equals(StringUtils.nullToEmpty(expectedSignature));
83  }
String generateSignature(String signingInput)
Definition: HMACSigner.java:36

メンバ詳解

◆ sharedSecret

String org.xdi.oxauth.model.jws.HMACSigner.sharedSecret
private

このクラス詳解は次のファイルから抽出されました: