Home | History | Annotate | Download | only in tsp
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one
      3  * or more contributor license agreements.  See the NOTICE file
      4  * distributed with this work for additional information
      5  * regarding copyright ownership.  The ASF licenses this file
      6  * to you under the Apache License, Version 2.0 (the
      7  * "License"); you may not use this file except in compliance
      8  * with the License.  You may obtain a copy of the License at
      9  *
     10  *   http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  * Unless required by applicable law or agreed to in writing,
     13  * software distributed under the License is distributed on an
     14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     15  * KIND, either express or implied.  See the License for the
     16  * specific language governing permissions and limitations
     17  * under the License.
     18  */
     19 
     20 package org.apache.harmony.security.x509.tsp;
     21 
     22 import java.security.InvalidParameterException;
     23 
     24 /**
     25    Corresponds to PKIFailureInfo structure.
     26    See RFC 3161 -
     27    Internet X.509 Public Key Infrastructure
     28    Time-Stamp Protocol (TSP)
     29    http://www.ietf.org/rfc/rfc3161.txt)
     30 
     31    PKIFailureInfo ::= BIT STRING {
     32    badAlg               (0),
     33      -- unrecognized or unsupported Algorithm Identifier
     34    badRequest           (2),
     35      -- transaction not permitted or supported
     36    badDataFormat        (5),
     37      -- the data submitted has the wrong format
     38    timeNotAvailable    (14),
     39      -- the TSA's time source is not available
     40    unacceptedPolicy    (15),
     41      -- the requested TSA policy is not supported by the TSA
     42    unacceptedExtension (16),
     43      -- the requested extension is not supported by the TSA
     44     addInfoNotAvailable (17)
     45       -- the additional information requested could not be understood
     46       -- or is not available
     47     systemFailure       (25)
     48       -- the request cannot be handled due to system failure  }
     49 
     50     The value of PKIFailureInfo can take only one of the values,
     51     so it is represented by an integer here.
     52  */
     53 public enum PKIFailureInfo {
     54     /**
     55      *  Unrecognized algorithm ID
     56      */
     57     BAD_ALG(0),
     58 
     59     /**
     60      *  Transaction is not supported
     61      */
     62     BAD_REQUEST(2),
     63 
     64     /**
     65      *  Data format is wrong
     66      */
     67     BAD_DATA_FORMAT(5),
     68 
     69     /**
     70      *  TSA cannot use the time source
     71      */
     72     TIME_NOT_AVAILABLE(14),
     73 
     74     /**
     75      *  The policy is not supported
     76      */
     77     UNACCEPTED_POLICY(15),
     78 
     79     /**
     80      *  The extension is not supported
     81      */
     82     UNACCEPTED_EXTENSION(16),
     83 
     84     /**
     85      *  The requested additional info is not available
     86      */
     87     ADD_INFO_NOT_AVAILABLE(17),
     88 
     89     /**
     90      *  System failure has occured
     91      */
     92     SYSTEM_FAILURE(25);
     93 
     94 
     95     private final int value;
     96 
     97     private static int maxValue;
     98 
     99     PKIFailureInfo(int value) {
    100         this.value = value;
    101     }
    102 
    103     /**
    104      * @return int value of the failure
    105      */
    106     public int getValue() {
    107         return value;
    108     }
    109 
    110     /**
    111      * @return maximum of values in the enum
    112      */
    113     public static int getMaxValue() {
    114         if (maxValue == 0) {
    115             for (PKIFailureInfo cur : values())
    116                 if (cur.value > maxValue) {
    117                     maxValue = cur.value;
    118                 }
    119         }
    120         return maxValue;
    121     }
    122 
    123     /**
    124      * @param value
    125      * @return
    126      */
    127     public static PKIFailureInfo getInstance(int value) {
    128         for (PKIFailureInfo info : values()){
    129             if (value == info.value) {
    130                 return info;
    131             }
    132         }
    133         throw new InvalidParameterException("Unknown PKIFailureInfo value");
    134     }
    135 }
    136 
    137