import java.net.URI;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
+import java.time.Instant;
import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
public class NamingUtils {
- private final static DateTimeFormatter ldapDateTimeFormatter = DateTimeFormatter
- .ofPattern("uuuuMMddHHmmss[,S][.S]X");
+ private final static DateTimeFormatter utcLdapDate = DateTimeFormatter.ofPattern("uuuuMMddHHmmssX")
+ .withZone(ZoneOffset.UTC);
- public static OffsetDateTime ldapDateToInstant(String ldapDate) {
- return OffsetDateTime.parse(ldapDate, ldapDateTimeFormatter);
+ public static Instant ldapDateToInstant(String ldapDate) {
+ return OffsetDateTime.parse(ldapDate, utcLdapDate).toInstant();
+ }
+
+ public static String instantToLdapDate(ZonedDateTime instant) {
+ return utcLdapDate.format(instant.withZoneSameInstant(ZoneOffset.UTC));
}
public static String getQueryValue(Map<String, List<String>> query, String key) {
private NamingUtils() {
}
+
+// public static void main(String args[]) {
+// ZonedDateTime now = ZonedDateTime.now().withZoneSameInstant(ZoneOffset.UTC);
+// String str = utcLdapDate.format(now);
+// System.out.println(str);
+// utcLdapDate.parse(str);
+// }
}
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
-import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
-import java.time.OffsetDateTime;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Base64;
Map<String, List<String>> query = NamingUtils.queryToMap(uri);
String expiryTimestamp = NamingUtils.getQueryValue(query, LdapAttrs.modifyTimestamp.name());
if (expiryTimestamp != null) {
- OffsetDateTime expiryOdt = NamingUtils.ldapDateToInstant(expiryTimestamp);
- if (expiryOdt.isBefore(OffsetDateTime.now()))
+ Instant expiryOdt = NamingUtils.ldapDateToInstant(expiryTimestamp);
+ if (expiryOdt.isBefore(Instant.now()))
return false;
} else {
throw new UnsupportedOperationException("An expiry timestamp "
CharBuffer charBuffer = CharBuffer.wrap(chars);
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(charBuffer);
byte[] bytes = Arrays.copyOfRange(byteBuffer.array(), byteBuffer.position(), byteBuffer.limit());
- Arrays.fill(charBuffer.array(), '\u0000'); // clear sensitive data
+ // Arrays.fill(charBuffer.array(), '\u0000'); // clear sensitive data
Arrays.fill(byteBuffer.array(), (byte) 0); // clear sensitive data
return bytes;
}