From ee5188c4c3dadc3adecfa173f4c18e40daf962c6 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Wed, 22 Jul 2009 16:40:39 +0800 Subject: [PATCH] 6854308: more ktab options Reviewed-by: mullan --- .../security/krb5/internal/ktab/KeyTab.java | 27 +++- .../security/krb5/internal/tools/Klist.java | 1 + .../security/krb5/internal/tools/Ktab.java | 126 +++++++++++++----- 3 files changed, 112 insertions(+), 42 deletions(-) diff --git a/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java b/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java index 4fd7b3bf4e6..d7c5484ec0c 100644 --- a/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java +++ b/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -403,11 +403,11 @@ public class KeyTab implements KeyTabConstants { /** * Retrieves the key table entry with the specified service name. * @param service the service which may have an entry in the key table. + * @param keyType the etype to match, returns the 1st one if -1 provided * @return -1 if the entry is not found, else return the entry index * in the list. */ private int retrieveEntry(PrincipalName service, int keyType) { - int found = -1; KeyTabEntry e; if (entries != null) { for (int i = 0; i < entries.size(); i++) { @@ -418,7 +418,7 @@ public class KeyTab implements KeyTabConstants { } } } - return found; + return -1; } /** @@ -476,12 +476,29 @@ public class KeyTab implements KeyTabConstants { /** * Removes an entry from the key table. * @param service the service PrincipalName. + * @param etype the etype to match, first one if -1 provided + * @return 1 if removed successfully, 0 otherwise */ - public void deleteEntry(PrincipalName service) { - int result = retrieveEntry(service, -1); + public int deleteEntry(PrincipalName service, int etype) { + int result = retrieveEntry(service, etype); if (result != -1) { entries.removeElementAt(result); + return 1; } + return 0; + } + + /** + * Removes an entry from the key table. + * @param service the service PrincipalName. + * @return number of entries removed + */ + public int deleteEntry(PrincipalName service) { + int count = 0; + while (deleteEntry(service, -1) > 0) { + count++; + } + return count; } /** diff --git a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java index c4724fbd382..5cb919b9d52 100644 --- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java +++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java @@ -1,4 +1,5 @@ /* + * Portions Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java index b773189c113..30be1b51405 100644 --- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java +++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java @@ -1,4 +1,5 @@ /* + * Portions Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,16 +31,15 @@ package sun.security.krb5.internal.tools; import sun.security.krb5.*; -import sun.security.krb5.internal.*; import sun.security.krb5.internal.ktab.*; -import sun.security.krb5.KrbCryptoException; -import java.lang.RuntimeException; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; -import java.io.FileOutputStream; import java.io.File; +import java.text.DateFormat; import java.util.Arrays; +import java.util.Date; +import sun.security.krb5.internal.crypto.EType; /** * This class can execute as a command-line tool to help the user manage * entires in the key table. @@ -55,6 +55,9 @@ public class Ktab { char action; String name; // name and directory of key table String principal; + boolean showEType; + boolean showTime; + int etype = -1; char[] password = null; /** @@ -62,13 +65,14 @@ public class Ktab { *
Usage: ktab *
available options to Ktab: *