| /* |
| * Copyright 2017-present Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.onosproject.lisp.msg.protocols; |
| |
| import io.netty.buffer.ByteBuf; |
| import org.onosproject.lisp.msg.exceptions.LispWriterException; |
| |
| /** |
| * LISP signature interface. |
| * |
| * <p> |
| * LISP signature format is defined in draft-ietf-lisp-ddt-09. |
| * https://tools.ietf.org/html/draft-ietf-lisp-ddt-09#page-14 |
| * |
| * <pre> |
| * {@literal |
| * 0 1 2 3 |
| * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * /| Original Record TTL | |
| * / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * / | Signature Expiration | |
| * | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * s | Signature Inception | |
| * i +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * g | Key Tag | Sig Length | |
| * | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * \ | Sig-Algorithm | Reserved | Reserved | |
| * \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * \ ~ Signature ~ |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * }</pre> |
| */ |
| public interface LispSignature { |
| |
| /** |
| * Obtains record TTL value. |
| * |
| * @return record TTL value |
| */ |
| int getRecordTtl(); |
| |
| /** |
| * Obtains signature expiration. |
| * |
| * @return signature expiration |
| */ |
| int getSigExpiration(); |
| |
| /** |
| * Obtains signature inception. |
| * |
| * @return signature inception |
| */ |
| int getSigInception(); |
| |
| /** |
| * Obtains key tag. |
| * |
| * @return key tag |
| */ |
| short getKeyTag(); |
| |
| /** |
| * Obtains signature length. |
| * |
| * @return signature length. |
| */ |
| short getSigLength(); |
| |
| /** |
| * Obtains signature algorithm. |
| * |
| * @return signature algorithm |
| */ |
| byte getSigAlgorithm(); |
| |
| /** |
| * Obtains signature. |
| * |
| * @return signature |
| */ |
| int getSignature(); |
| |
| /** |
| * Writes LISP object into communication channel. |
| * |
| * @param byteBuf byte buffer |
| * @throws LispWriterException on error |
| */ |
| void writeTo(ByteBuf byteBuf) throws LispWriterException; |
| |
| /** |
| * A builder for LISP signature. |
| */ |
| interface SignatureBuilder { |
| |
| /** |
| * Sets record TTL value. |
| * |
| * @param recordTtl record TTL |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withRecordTtl(int recordTtl); |
| |
| /** |
| * Sets signature expiration. |
| * |
| * @param sigExpiration signature expiration |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withSigExpiration(int sigExpiration); |
| |
| /** |
| * Sets signature inception. |
| * |
| * @param sigInception signature inception |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withSigInception(int sigInception); |
| |
| /** |
| * Sets key tag. |
| * |
| * @param keyTag key tag |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withKeyTag(short keyTag); |
| |
| /** |
| * Sets signature length. |
| * |
| * @param sigLength signature length |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withSigLength(short sigLength); |
| |
| /** |
| * Sets signature algorithm. |
| * |
| * @param sigAlgorithm signature algorithm |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withSigAlgorithm(byte sigAlgorithm); |
| |
| /** |
| * Sets signature. |
| * |
| * @param signature signature |
| * @return SignatureBuilder object |
| */ |
| SignatureBuilder withSignature(int signature); |
| |
| /** |
| * Builds LISP signature object. |
| * |
| * @return LISP signature object |
| */ |
| LispSignature build(); |
| } |
| } |