jdk/src/jdk.snmp/share/classes/com/sun/jmx/snmp/SnmpUsmKeyHandler.java
author chegar
Sun, 17 Aug 2014 15:54:13 +0100
changeset 25859 3317bb8137f4
parent 5506 jdk/src/share/classes/com/sun/jmx/snmp/SnmpUsmKeyHandler.java@202f599c92aa
permissions -rw-r--r--
8054834: Modular Source Code Reviewed-by: alanb, chegar, ihse, mduigou Contributed-by: alan.bateman@oracle.com, alex.buckley@oracle.com, chris.hegarty@oracle.com, erik.joelsson@oracle.com, jonathan.gibbons@oracle.com, karen.kinnear@oracle.com, magnus.ihse.bursie@oracle.com, mandy.chung@oracle.com, mark.reinhold@oracle.com, paul.sandoz@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     2
 * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    23
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
package com.sun.jmx.snmp;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
 * This interface allows you to compute key localization and delta generation. It is useful when adding user in USM MIB. An instance of <CODE> SnmpUsmKeyHandler </CODE> is associated to each <CODE> SnmpEngine </CODE> object.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
 * When computing key, an authentication algorithm is needed. The supported ones are : usmHMACMD5AuthProtocol and usmHMACSHAAuthProtocol.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
 * <p><b>This API is a Sun Microsystems internal API  and is subject
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
 * to change without notice.</b></p>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
 * @since 1.5
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
public interface SnmpUsmKeyHandler {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
     * DES privacy algorithm key size. To be used when localizing privacy key
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
    public static int DES_KEY_SIZE = 16;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
     * DES privacy algorithm delta size. To be used when calculing privacy key delta.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
    public static int DES_DELTA_SIZE = 16;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
     * Translate a password to a key. It MUST be compliant to RFC 2574 description.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
     * @param algoName The authentication algorithm to use.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
     * @param password Password to convert.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
     * @return The key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
     * @exception IllegalArgumentException If the algorithm is unknown.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
    public byte[] password_to_key(String algoName, String password) throws IllegalArgumentException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
     * Localize the passed key using the passed <CODE>SnmpEngineId</CODE>. It MUST be compliant to RFC 2574 description.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
     * @param algoName The authentication algorithm to use.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
     * @param key The key to localize;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
     * @param engineId The Id used to localize the key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
     * @return The localized key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
     * @exception IllegalArgumentException If the algorithm is unknown.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
    public byte[] localizeAuthKey(String algoName, byte[] key, SnmpEngineId engineId) throws IllegalArgumentException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
     * Localize the passed privacy key using the passed <CODE>SnmpEngineId</CODE>. It MUST be compliant to RFC 2574 description.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
     * @param algoName The authentication algorithm to use.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
     * @param key The key to localize;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
     * @param engineId The Id used to localize the key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
     * @param keysize The privacy algorithm key size.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
     * @return The localized key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
     * @exception IllegalArgumentException If the algorithm is unknown.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
    public byte[] localizePrivKey(String algoName, byte[] key, SnmpEngineId engineId,int keysize) throws IllegalArgumentException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
     * Calculate the delta parameter needed when processing key change. This computation is done by the key change initiator. It MUST be compliant to RFC 2574 description.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
     * @param algoName The authentication algorithm to use.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
     * @param oldKey The old key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
     * @param newKey The new key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
     * @param random The random value.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
     * @return The delta.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
     * @exception IllegalArgumentException If the algorithm is unknown.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
    public byte[] calculateAuthDelta(String algoName, byte[] oldKey, byte[] newKey, byte[] random) throws IllegalArgumentException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
    /**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
     * Calculate the delta parameter needed when processing key change for a privacy algorithm. This computation is done by the key change initiator. It MUST be compliant to RFC 2574 description.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
     * @param algoName The authentication algorithm to use.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
     * @param oldKey The old key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
     * @param newKey The new key.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
     * @param random The random value.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
     * @param deltaSize The algo delta size.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
     * @return The delta.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
     * @exception IllegalArgumentException If the algorithm is unknown.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
    public byte[] calculatePrivDelta(String algoName, byte[] oldKey, byte[] newKey, byte[] random, int deltaSize) throws IllegalArgumentException;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
}