/** * Generates the localized key for the given password and engine id for the privacy protocol * specified by the supplied OID. * * @param privProtocolID an <code>OID</code> identifying the privacy protocol the key should be * created for. * @param authProtocolID an <code>OID</code> identifying the authentication protocol to use. * @param passwordString the authentication pass phrase. * @param engineID the engine ID of the authoritative engine. * @return the localized privacy key. */ public byte[] passwordToKey( OID privProtocolID, OID authProtocolID, OctetString passwordString, byte[] engineID) { AuthenticationProtocol authProtocol = authProtocols.get(authProtocolID); if (authProtocol == null) { return null; } PrivacyProtocol privProtocol = privProtocols.get(privProtocolID); if (privProtocol == null) { return null; } byte[] key = authProtocol.passwordToKey(passwordString, engineID); if (key == null) { return null; } if (key.length >= privProtocol.getMinKeyLength()) { if (key.length > privProtocol.getMaxKeyLength()) { // truncate key byte[] truncatedKey = new byte[privProtocol.getMaxKeyLength()]; System.arraycopy(key, 0, truncatedKey, 0, privProtocol.getMaxKeyLength()); return truncatedKey; } return key; } // extend key if necessary byte[] extKey = privProtocol.extendShortKey(key, passwordString, engineID, authProtocol); return extKey; }
/** * Generates the localized key for the given password and engine id for the authentication * protocol specified by the supplied OID. * * @param authProtocolID an <code>OID</code> identifying the authentication protocol to use. * @param passwordString the authentication pass phrase. * @param engineID the engine ID of the authoritative engine. * @return the localized authentication key. */ public byte[] passwordToKey(OID authProtocolID, OctetString passwordString, byte[] engineID) { AuthenticationProtocol protocol = authProtocols.get(authProtocolID); if (protocol == null) { return null; } return protocol.passwordToKey(passwordString, engineID); }