@Override public EncryptionKey deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { JsonObject jsonObject = (JsonObject) jsonElement; EncryptionKey encryptionKey = new EncryptionKey(); try { encryptionKey.decode(HexUtil.hex2bytes(jsonObject.get("key").getAsString())); } catch (IOException e) { LOG.error("Fail to decode encryption key. " + e); } encryptionKey.setKvno(jsonObject.get("kvno").getAsInt()); return encryptionKey; }
@Override public EncryptionKey deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { JsonObject jsonObject = (JsonObject) jsonElement; EncryptionKey encryptionKey = new EncryptionKey(); try { encryptionKey.decode(HexUtil.hex2bytes(jsonObject.get("key").getAsString())); } catch (IOException e) { LOG.error("Fail to decode encryption key. " + e); } encryptionKey.setKvno(jsonObject.get("kvno").getAsInt()); return encryptionKey; }
public static EncryptionKey[] convertKerberosKeyToEncryptionKey(KerberosKey[] krbKeys) { if (krbKeys == null) { return null; } EncryptionKey[] keys = new EncryptionKey[krbKeys.length]; int i = 0; for (KerberosKey krbKey : krbKeys) { keys[i++] = new EncryptionKey(krbKey.getKeyType(), krbKey.getEncoded()); } return keys; }
/** * Random to key. * * @param eType The encryption type * @param randomBytes The random bytes * @return The encryption key * @throws KrbException e */ public static EncryptionKey random2Key(EncryptionType eType, byte[] randomBytes) throws KrbException { EncTypeHandler handler = getEncHandler(eType); byte[] randomBytes1 = randomBytes; byte[] keyBytes = handler.random2Key(randomBytes1); return new EncryptionKey(eType, keyBytes); }
/** * Random to key. * * @param eType The encryption type * @param randomBytes The random bytes * @return The encryption key * @throws KrbException e */ public static EncryptionKey random2Key(EncryptionType eType, byte[] randomBytes) throws KrbException { EncTypeHandler handler = getEncHandler(eType); byte[] randomBytes1 = randomBytes; byte[] keyBytes = handler.random2Key(randomBytes1); return new EncryptionKey(eType, keyBytes); }
/** * String to key. * * @param string The string * @param salt The salt * @param s2kparams The params * @param eType The encryption type * @return The encryption key * @throws KrbException e */ public static EncryptionKey string2Key(String string, String salt, byte[] s2kparams, EncryptionType eType) throws KrbException { EncTypeHandler handler = getEncHandler(eType); byte[] keyBytes = handler.str2key(string, salt, s2kparams); return new EncryptionKey(eType, keyBytes); }
/** * String to key. * * @param string The string * @param salt The salt * @param s2kparams The params * @param eType The encryption type * @return The encryption key * @throws KrbException e */ public static EncryptionKey string2Key(String string, String salt, byte[] s2kparams, EncryptionType eType) throws KrbException { EncTypeHandler handler = getEncHandler(eType); byte[] keyBytes = handler.str2key(string, salt, s2kparams); return new EncryptionKey(eType, keyBytes); }
/** * Get keys. * @throws IOException e * @return keys */ public List<EncryptionKey> getKeys() throws IOException { Iterator<Value> iterator1 = entry.get(KerberosAttribute.KRB5_KEY_AT).iterator(); List<EncryptionKey> keys = new ArrayList<>(); while (iterator1.hasNext()) { byte[] encryKey = iterator1.next().getBytes(); EncryptionKey key = new EncryptionKey(); key.decode(encryKey); key.setKvno(1); // TODO: kvno should be correctly stored and retrieved keys.add(key); } return keys; }
/** * Get keys. * @throws IOException e * @return keys */ public List<EncryptionKey> getKeys() throws IOException { Iterator<Value> iterator1 = entry.get(KerberosAttribute.KRB5_KEY_AT).iterator(); List<EncryptionKey> keys = new ArrayList<>(); while (iterator1.hasNext()) { byte[] encryKey = iterator1.next().getBytes(); EncryptionKey key = new EncryptionKey(); key.decode(encryKey); key.setKvno(1); // TODO: kvno should be correctly stored and retrieved keys.add(key); } return keys; }
public EncryptionKey readKey() throws IOException { int eType = readShort(); EncryptionType encType = EncryptionType.fromValue(eType); byte[] keyData = readCountedOctets(); if (encType == EncryptionType.NONE || keyData == null) { return null; } EncryptionKey key = new EncryptionKey(encType, keyData); return key; }
public EncryptionKey readKey() throws IOException { int eType = readShort(); EncryptionType encType = EncryptionType.fromValue(eType); byte[] keyData = readCountedOctets(); if (encType == EncryptionType.NONE || keyData == null) { return null; } EncryptionKey key = new EncryptionKey(encType, keyData); return key; }
public List<EncryptionKey> getKeys() throws KeeperException { String znode = IdentityZNodeHelper.getKeysZNode(this.identityName); if (ZKUtil.checkExists(this.zk, znode) == -1) { throw new IllegalArgumentException("The znode " + znode + " is not found"); } List<String> typeNames = ZKUtil.listChildrenNoWatch(this.zk, znode); List<EncryptionKey> keys = new ArrayList<>(typeNames.size()); for (String typeName : typeNames) { byte[] key = getEncryptionKey(typeName); EncryptionKey encryptionKey = new EncryptionKey(); try { encryptionKey.decode(key); } catch (IOException e) { LOG.error("Fail to decode the encryption key. " + e); } encryptionKey.setKvno(getEncryptionKeyNo(typeName)); keys.add(encryptionKey); } return keys; }
/** * Random to key. * * @param eType The encryption type * @return The encryption key * @throws KrbException e */ public static EncryptionKey random2Key(EncryptionType eType) throws KrbException { EncTypeHandler handler = getEncHandler(eType); byte[] randomBytes = Random.makeBytes(handler.keyInputSize()); byte[] keyBytes = handler.random2Key(randomBytes); return new EncryptionKey(eType, keyBytes); }
public EncryptionKey generateKey(byte[] clientDhNonce, byte[] serverDhNonce, EncryptionType type) { // ZZ length will be same as public key. byte[] dhSharedSecret = serverKeyAgree.generateSecret(); byte[] x = dhSharedSecret; if (clientDhNonce != null && clientDhNonce.length > 0 && serverDhNonce != null && serverDhNonce.length > 0) { x = concatenateBytes(dhSharedSecret, clientDhNonce); x = concatenateBytes(x, serverDhNonce); } byte[] secret = OctetString2Key.kTruncate(dhSharedSecret.length, x); serverKey = new EncryptionKey(type, secret); return serverKey; }
public static EncryptionKey getEncryptionKey(KerberosKey[] krbKeys, int encType) { if (krbKeys == null) { return null; } for (KerberosKey krbKey : krbKeys) { if (krbKey.getKeyType() == encType && !krbKey.isDestroyed()) { return new EncryptionKey(krbKey.getKeyType(), krbKey.getEncoded()); } } return null; }
public EncryptionKey generateKey(byte[] clientDhNonce, byte[] serverDhNonce, EncryptionType type) { // ZZ length will be same as public key. byte[] dhSharedSecret = clientKeyAgree.generateSecret(); byte[] x = dhSharedSecret; if (clientDhNonce != null && clientDhNonce.length > 0 && serverDhNonce != null && serverDhNonce.length > 0) { x = concatenateBytes(dhSharedSecret, clientDhNonce); x = concatenateBytes(x, serverDhNonce); } byte[] secret = OctetString2Key.kTruncate(dhSharedSecret.length, x); clientKey = new EncryptionKey(type, secret); return clientKey; }
/** * Random to key. * * @param eType The encryption type * @return The encryption key * @throws KrbException e */ public static EncryptionKey random2Key(EncryptionType eType) throws KrbException { EncTypeHandler handler = getEncHandler(eType); byte[] randomBytes = Random.makeBytes(handler.keyInputSize()); byte[] keyBytes = handler.random2Key(randomBytes); return new EncryptionKey(eType, keyBytes); }
public EncryptionKey generateKey(byte[] clientDhNonce, byte[] serverDhNonce, EncryptionType type) { // ZZ length will be same as public key. byte[] dhSharedSecret = clientKeyAgree.generateSecret(); byte[] x = dhSharedSecret; if (clientDhNonce != null && clientDhNonce.length > 0 && serverDhNonce != null && serverDhNonce.length > 0) { x = concatenateBytes(dhSharedSecret, clientDhNonce); x = concatenateBytes(x, serverDhNonce); } byte[] secret = OctetString2Key.kTruncate(dhSharedSecret.length, x); clientKey = new EncryptionKey(type, secret); return clientKey; }
public EncryptionKey generateKey(byte[] clientDhNonce, byte[] serverDhNonce, EncryptionType type) { // ZZ length will be same as public key. byte[] dhSharedSecret = serverKeyAgree.generateSecret(); byte[] x = dhSharedSecret; if (clientDhNonce != null && clientDhNonce.length > 0 && serverDhNonce != null && serverDhNonce.length > 0) { x = concatenateBytes(dhSharedSecret, clientDhNonce); x = concatenateBytes(x, serverDhNonce); } byte[] secret = OctetString2Key.kTruncate(dhSharedSecret.length, x); serverKey = new EncryptionKey(type, secret); return serverKey; }
/** * Filter out an appropriate KerberosKey from krbKeys and generate a * EncryptionKey accordingly * * @param krbKeys * @param encType * @param kvno * @return */ public static EncryptionKey getEncryptionKey(KerberosKey[] krbKeys, int encType, int kvno) { if (krbKeys == null) { return null; } for (KerberosKey krbKey : krbKeys) { if (krbKey.getKeyType() == encType && krbKey.getVersionNumber() == kvno && !krbKey.isDestroyed()) { return new EncryptionKey(krbKey.getKeyType(), krbKey.getEncoded()); } } return null; }