16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.asn1;
26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompublic class ASN1ObjectIdentifier
46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    extends DERObjectIdentifier
56e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{
66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public ASN1ObjectIdentifier(String identifier)
76e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        super(identifier);
96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    ASN1ObjectIdentifier(byte[] bytes)
126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        super(bytes);
146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
16a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    ASN1ObjectIdentifier(ASN1ObjectIdentifier oid, String branch)
17a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    {
18a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom        super(oid, branch);
19a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    }
20a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom
216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    /**
226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * Return an OID that creates a branch under the current one.
236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * @param branchID node numbers for the new branch.
254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * @return the OID for the new created branch.
266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     */
276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public ASN1ObjectIdentifier branch(String branchID)
286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
29a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom        return new ASN1ObjectIdentifier(this, branchID);
306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    /**
334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * Return  true if this oid is an extension of the passed in branch, stem.
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * @param stem the arc or branch that is a possible parent.
354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     * @return  true if the branch is on the passed in stem, false otherwise.
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom     */
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public boolean on(ASN1ObjectIdentifier stem)
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        String id = getId(), stemId = stem.getId();
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return id.length() > stemId.length() && id.charAt(stemId.length()) == '.' && id.startsWith(stemId);
414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom}
43