001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.apache.geronimo.util.asn1.pkcs;
020
021 import org.apache.geronimo.util.asn1.ASN1Encodable;
022 import org.apache.geronimo.util.asn1.ASN1EncodableVector;
023 import org.apache.geronimo.util.asn1.ASN1Sequence;
024 import org.apache.geronimo.util.asn1.DERBitString;
025 import org.apache.geronimo.util.asn1.DERObject;
026 import org.apache.geronimo.util.asn1.DERSequence;
027 import org.apache.geronimo.util.asn1.x509.AlgorithmIdentifier;
028
029 /**
030 * PKCS10 Certification request object.
031 * <pre>
032 * CertificationRequest ::= SEQUENCE {
033 * certificationRequestInfo CertificationRequestInfo,
034 * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
035 * signature BIT STRING
036 * }
037 * </pre>
038 */
039 public class CertificationRequest
040 extends ASN1Encodable
041 {
042 protected CertificationRequestInfo reqInfo = null;
043 protected AlgorithmIdentifier sigAlgId = null;
044 protected DERBitString sigBits = null;
045
046 protected CertificationRequest()
047 {
048 }
049
050 public CertificationRequest(
051 CertificationRequestInfo requestInfo,
052 AlgorithmIdentifier algorithm,
053 DERBitString signature)
054 {
055 this.reqInfo = requestInfo;
056 this.sigAlgId = algorithm;
057 this.sigBits = signature;
058 }
059
060 public CertificationRequest(
061 ASN1Sequence seq)
062 {
063 reqInfo = CertificationRequestInfo.getInstance(seq.getObjectAt(0));
064 sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
065 sigBits = (DERBitString)seq.getObjectAt(2);
066 }
067
068 public CertificationRequestInfo getCertificationRequestInfo()
069 {
070 return reqInfo;
071 }
072
073 public AlgorithmIdentifier getSignatureAlgorithm()
074 {
075 return sigAlgId;
076 }
077
078 public DERBitString getSignature()
079 {
080 return sigBits;
081 }
082
083 public DERObject toASN1Object()
084 {
085 // Construct the CertificateRequest
086 ASN1EncodableVector v = new ASN1EncodableVector();
087
088 v.add(reqInfo);
089 v.add(sigAlgId);
090 v.add(sigBits);
091
092 return new DERSequence(v);
093 }
094 }