1 /** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one or more 4 * contributor license agreements. See the NOTICE file distributed with 5 * this work for additional information regarding copyright ownership. 6 * The ASF licenses this file to You under the Apache License, Version 2.0 7 * (the "License"); you may not use this file except in compliance with 8 * 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, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package org.apache.geronimo.util.asn1.x509; 20 21 import org.apache.geronimo.util.asn1.DERBitString; 22 23 /** 24 * The KeyUsage object. 25 * <pre> 26 * id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } 27 * 28 * KeyUsage ::= BIT STRING { 29 * digitalSignature (0), 30 * nonRepudiation (1), 31 * keyEncipherment (2), 32 * dataEncipherment (3), 33 * keyAgreement (4), 34 * keyCertSign (5), 35 * cRLSign (6), 36 * encipherOnly (7), 37 * decipherOnly (8) } 38 * </pre> 39 */ 40 public class KeyUsage 41 extends DERBitString 42 { 43 public static final int digitalSignature = (1 << 7); 44 public static final int nonRepudiation = (1 << 6); 45 public static final int keyEncipherment = (1 << 5); 46 public static final int dataEncipherment = (1 << 4); 47 public static final int keyAgreement = (1 << 3); 48 public static final int keyCertSign = (1 << 2); 49 public static final int cRLSign = (1 << 1); 50 public static final int encipherOnly = (1 << 0); 51 public static final int decipherOnly = (1 << 15); 52 53 /** 54 * Basic constructor. 55 * 56 * @param usage - the bitwise OR of the Key Usage flags giving the 57 * allowed uses for the key. 58 * e.g. (KeyUsage.keyEncipherment | KeyUsage.dataEncipherment) 59 */ 60 public KeyUsage( 61 int usage) 62 { 63 super(getBytes(usage), getPadBits(usage)); 64 } 65 66 public KeyUsage( 67 DERBitString usage) 68 { 69 super(usage.getBytes(), usage.getPadBits()); 70 } 71 72 public String toString() 73 { 74 if (data.length == 1) 75 { 76 return "KeyUsage: 0x" + Integer.toHexString(data[0] & 0xff); 77 } 78 return "KeyUsage: 0x" + Integer.toHexString((data[1] & 0xff) << 8 | (data[0] & 0xff)); 79 } 80 }