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

公開メンバ関数

 ECDSAKeyFactory (SignatureAlgorithm signatureAlgorithm, String dnName) throws InvalidParameterException, NoSuchProviderException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, SignatureException, InvalidKeyException, CertificateEncodingException
 
Certificate generateV3Certificate (Date startDate, Date expirationDate, String dnName) throws CertificateEncodingException, InvalidKeyException, IllegalStateException, NoSuchProviderException, NoSuchAlgorithmException, SignatureException
 
ECDSAPrivateKey getPrivateKey ()
 
ECDSAPublicKey getPublicKey ()
 
Certificate getCertificate ()
 
Key< E, F > getKey ()
 

非公開変数類

SignatureAlgorithm signatureAlgorithm
 
KeyPair keyPair
 
ECDSAPrivateKey ecdsaPrivateKey
 
ECDSAPublicKey ecdsaPublicKey
 
Certificate certificate
 

詳解

Factory to create asymmetric Public and Private Keys for the Elliptic Curve Digital Signature Algorithm (ECDSA)

著者
Javier Rojas Blum
バージョン
June 15, 2016

構築子と解体子

◆ ECDSAKeyFactory()

org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.ECDSAKeyFactory ( SignatureAlgorithm  signatureAlgorithm,
String  dnName 
) throws InvalidParameterException, NoSuchProviderException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, SignatureException, InvalidKeyException, CertificateEncodingException
inline
46  {
47  if (signatureAlgorithm == null) {
48  throw new InvalidParameterException("The signature algorithm cannot be null");
49  }
50 
52 
53  ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(signatureAlgorithm.getCurve().getName());
54 
55  KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDSA", "BC");
56  keyGen.initialize(ecSpec, new SecureRandom());
57 
58  this.keyPair = keyGen.generateKeyPair();
59  BCECPrivateKey privateKeySpec = (BCECPrivateKey) keyPair.getPrivate();
60  BCECPublicKey publicKeySpec = (BCECPublicKey) keyPair.getPublic();
61 
62  BigInteger x = publicKeySpec.getQ().getX().toBigInteger();
63  BigInteger y = publicKeySpec.getQ().getY().toBigInteger();
64  BigInteger d = privateKeySpec.getD();
65 
66  this.ecdsaPrivateKey = new ECDSAPrivateKey(d);
67  this.ecdsaPublicKey = new ECDSAPublicKey(signatureAlgorithm, x, y);
68 
69  if (StringUtils.isNotBlank(dnName)) {
70  // Create certificate
71  GregorianCalendar startDate = new GregorianCalendar(); // time from which certificate is valid
72  GregorianCalendar expiryDate = new GregorianCalendar(); // time after which certificate is not valid
73  expiryDate.add(Calendar.YEAR, 1);
74  BigInteger serialNumber = new BigInteger(1024, new Random()); // serial number for certificate
75 
76  X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();
77  X500Principal principal = new X500Principal(dnName);
78 
79  certGen.setSerialNumber(serialNumber);
80  certGen.setIssuerDN(principal);
81  certGen.setNotBefore(startDate.getTime());
82  certGen.setNotAfter(expiryDate.getTime());
83  certGen.setSubjectDN(principal); // note: same as issuer
84  certGen.setPublicKey(keyPair.getPublic());
85  certGen.setSignatureAlgorithm("SHA256WITHECDSA");
86 
87  X509Certificate x509Certificate = certGen.generate(privateKeySpec, "BC");
88  this.certificate = new Certificate(signatureAlgorithm, x509Certificate);
89  }
90  }
KeyPair keyPair
Definition: ECDSAKeyFactory.java:38
Certificate certificate
Definition: ECDSAKeyFactory.java:42
ECDSAPublicKey ecdsaPublicKey
Definition: ECDSAKeyFactory.java:41
SignatureAlgorithm signatureAlgorithm
Definition: ECDSAKeyFactory.java:37
ECEllipticCurve getCurve()
Definition: SignatureAlgorithm.java:75
String getName()
Definition: ECEllipticCurve.java:26
ECDSAPrivateKey ecdsaPrivateKey
Definition: ECDSAKeyFactory.java:40

関数詳解

◆ generateV3Certificate()

Certificate org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.generateV3Certificate ( Date  startDate,
Date  expirationDate,
String  dnName 
) throws CertificateEncodingException, InvalidKeyException, IllegalStateException, NoSuchProviderException, NoSuchAlgorithmException, SignatureException
inline
92  {
93  // Create certificate
94  BigInteger serialNumber = new BigInteger(1024, new Random()); // serial number for certificate
95 
96  X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
97  X500Principal principal = new X500Principal(dnName);
98 
99  certGen.setSerialNumber(serialNumber);
100  certGen.setIssuerDN(principal);
101  certGen.setNotBefore(startDate);
102  certGen.setNotAfter(expirationDate);
103  certGen.setSubjectDN(principal); // note: same as issuer
104  certGen.setPublicKey(keyPair.getPublic());
105  certGen.setSignatureAlgorithm(signatureAlgorithm.getAlgorithm());
106 
107  X509Certificate x509Certificate = certGen.generate(keyPair.getPrivate(), "BC");
108  return new Certificate(signatureAlgorithm, x509Certificate);
109  }
KeyPair keyPair
Definition: ECDSAKeyFactory.java:38
String getAlgorithm()
Definition: SignatureAlgorithm.java:71
SignatureAlgorithm signatureAlgorithm
Definition: ECDSAKeyFactory.java:37

◆ getCertificate()

Certificate org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.getCertificate ( )
inline
122  {
123  return certificate;
124  }
Certificate certificate
Definition: ECDSAKeyFactory.java:42

◆ getKey()

Key<E, F> org.xdi.oxauth.model.crypto.KeyFactory< E extends PrivateKey, F extends PublicKey >.getKey ( )
inlineinherited
22  {
23  Key key = new Key();
24 
25  key.setPrivateKey(getPrivateKey());
26  key.setPublicKey(getPublicKey());
27  key.setCertificate(getCertificate());
28 
29  return key;
30  }
abstract Certificate getCertificate()

◆ getPrivateKey()

ECDSAPrivateKey org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.getPrivateKey ( )
inline
112  {
113  return ecdsaPrivateKey;
114  }
ECDSAPrivateKey ecdsaPrivateKey
Definition: ECDSAKeyFactory.java:40

◆ getPublicKey()

ECDSAPublicKey org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.getPublicKey ( )
inline
117  {
118  return ecdsaPublicKey;
119  }
ECDSAPublicKey ecdsaPublicKey
Definition: ECDSAKeyFactory.java:41

メンバ詳解

◆ certificate

Certificate org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.certificate
private

◆ ecdsaPrivateKey

ECDSAPrivateKey org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.ecdsaPrivateKey
private

◆ ecdsaPublicKey

ECDSAPublicKey org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.ecdsaPublicKey
private

◆ keyPair

KeyPair org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.keyPair
private

◆ signatureAlgorithm

SignatureAlgorithm org.xdi.oxauth.model.crypto.signature.ECDSAKeyFactory.signatureAlgorithm
private

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