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