1 package org.sapia.util.license; 2 3 import java.io.IOException ; 4 import java.io.Serializable ; 5 import java.security.KeyPair ; 6 import java.security.PrivateKey ; 7 import java.security.PublicKey ; 8 import java.util.Date ; 9 import java.util.HashMap ; 10 import java.util.Map ; 11 12 import org.sapia.util.CompositeRuntimeException; 13 14 34 public class LicenseRegistration implements Serializable { 35 36 static final long serialVersionUID = 1L; 37 38 private LicenseRecord _license; 39 private transient PublicKey _pub; 40 private transient PrivateKey _priv; 41 private byte[] _pubBytes, _privBytes; 42 private Map _data; 43 private Date _lastUpdate; 44 private Object _vendorId; 45 46 LicenseRegistration(Object vendorId, LicenseRecord license, KeyPair keys, Map data, Date createDate){ 47 _vendorId = vendorId; 48 _license = license; 49 _pubBytes = keys.getPublic().getEncoded(); 50 _privBytes = keys.getPrivate().getEncoded(); 51 _data = data; 52 _lastUpdate = createDate; 53 } 54 55 LicenseRegistration(Object vendorId, LicenseRecord license, KeyPair keys, Date createDate){ 56 this(vendorId, license, keys, new HashMap (), createDate); 57 } 58 59 62 public PublicKey getPublic(SecurityFactory fac){ 63 initKeys(fac); 64 return _pub; 65 } 66 67 70 public PrivateKey getPrivateKey(SecurityFactory fac){ 71 initKeys(fac); 72 return _priv; 73 } 74 75 81 public Date getLastUpdate(){ 82 return _lastUpdate; 83 } 84 85 88 public LicenseRecord getLicenseRecord(){ 89 return _license; 90 } 91 92 96 public Object getBinding(String name){ 97 if(_data == null) 98 return null; 99 return _data.get(name); 100 } 101 102 110 public void registerNewLicense(License license, Date currentDate, SecurityFactory factory, LicenseIdFactory idFactory) throws IOException , Exception { 111 _lastUpdate = currentDate; 112 initKeys(factory); 113 _license.registerNewLicense(_vendorId, license, _pub, _priv, factory, idFactory); 114 } 115 116 private void initKeys(SecurityFactory fac){ 117 if(_pub == null || _priv == null){ 118 try{ 119 _pub = (PublicKey )fac.generatePublic(_pubBytes); 120 _priv = (PrivateKey )fac.generatePrivate(_privBytes); 121 }catch(Exception e){ 122 throw new CompositeRuntimeException("Could not generate key from bytes", e); 123 } 124 } 125 } 126 127 } 128 | Popular Tags |