14782c2cdea4fc7d070c9dac560380cc45852babcKenny Root/* 24782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Copyright 2014 The Android Open Source Project 34782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * 44782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 54782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * you may not use this file except in compliance with the License. 64782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * You may obtain a copy of the License at 74782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * 84782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * http://www.apache.org/licenses/LICENSE-2.0 94782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * 104782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Unless required by applicable law or agreed to in writing, software 114782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 124782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * See the License for the specific language governing permissions and 144782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * limitations under the License. 154782c2cdea4fc7d070c9dac560380cc45852babcKenny Root */ 164782c2cdea4fc7d070c9dac560380cc45852babcKenny Root 174782c2cdea4fc7d070c9dac560380cc45852babcKenny Rootpackage java.security.cert; 184782c2cdea4fc7d070c9dac560380cc45852babcKenny Root 194782c2cdea4fc7d070c9dac560380cc45852babcKenny Rootimport java.io.IOException; 204782c2cdea4fc7d070c9dac560380cc45852babcKenny Rootimport java.io.OutputStream; 214782c2cdea4fc7d070c9dac560380cc45852babcKenny Root 224782c2cdea4fc7d070c9dac560380cc45852babcKenny Root/** 234782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * The Extension part of an X.509 certificate (as specified in <a 244782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * href="http://www.ietf.org/rfc/rfc3280.txt">RFC 3280 — Internet X.509 254782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Public Key Infrastructure: Certificate and Certificate Revocation List (CRL) 264782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Profile</p>): 274782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * 284782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * <pre> 294782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Extension ::= SEQUENCE { 304782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * extnID OBJECT IDENTIFIER, 314782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * critical BOOLEAN DEFAULT FALSE, 324782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * extnValue OCTET STRING 334782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * } 344782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * </pre> 354782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * 364782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * @since 1.7 374782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * @hide 384782c2cdea4fc7d070c9dac560380cc45852babcKenny Root */ 394782c2cdea4fc7d070c9dac560380cc45852babcKenny Rootpublic interface Extension { 404782c2cdea4fc7d070c9dac560380cc45852babcKenny Root /** 414782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Returns the OID (Object Identifier) for this extension encoded as a 424782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * string (e.g., "2.5.29.15"). 434782c2cdea4fc7d070c9dac560380cc45852babcKenny Root */ 444782c2cdea4fc7d070c9dac560380cc45852babcKenny Root String getId(); 454782c2cdea4fc7d070c9dac560380cc45852babcKenny Root 464782c2cdea4fc7d070c9dac560380cc45852babcKenny Root /** 474782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Returns {@code true} if this extension is critical. If this is true and 484782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * an implementation does not understand this extension, it must reject it. 494782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * See RFC 3280 section 4.2 for more information. 504782c2cdea4fc7d070c9dac560380cc45852babcKenny Root */ 514782c2cdea4fc7d070c9dac560380cc45852babcKenny Root boolean isCritical(); 524782c2cdea4fc7d070c9dac560380cc45852babcKenny Root 534782c2cdea4fc7d070c9dac560380cc45852babcKenny Root /** 544782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * The DER-encoded value of this extension. 554782c2cdea4fc7d070c9dac560380cc45852babcKenny Root */ 564782c2cdea4fc7d070c9dac560380cc45852babcKenny Root byte[] getValue(); 574782c2cdea4fc7d070c9dac560380cc45852babcKenny Root 584782c2cdea4fc7d070c9dac560380cc45852babcKenny Root /** 594782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * Writes the DER-encoded extension to {@code out}. 604782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * 614782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * @throws IOException when there is an encoding error or error writing to 624782c2cdea4fc7d070c9dac560380cc45852babcKenny Root * {@code out} 634782c2cdea4fc7d070c9dac560380cc45852babcKenny Root */ 644782c2cdea4fc7d070c9dac560380cc45852babcKenny Root void encode(OutputStream out) throws IOException; 654782c2cdea4fc7d070c9dac560380cc45852babcKenny Root} 66