1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package org.apache.harmony.xnet.provider.jsse;
19
20import java.io.IOException;
21
22/**
23 *
24 * Represents Finished message
25 * @see <a href="http://www.ietf.org/rfc/rfc2246.txt">TLS 1.0 spec., 7.4.9.
26 * Finished</a>
27 *
28 */
29public class Finished extends Message {
30
31    // verify data
32    private byte[] data;
33
34    /**
35     * Creates outbound message
36     * @param bytes
37     */
38    public Finished(byte[] bytes) {
39        data = bytes;
40        length = data.length;
41    }
42
43    /**
44     * Creates inbound message
45     * @param in
46     * @param length
47     * @throws IOException
48     */
49    public Finished(HandshakeIODataStream in, int length)
50            throws IOException {
51        if (length == 12 || length == 36) {
52            data = in.read(length);
53            this.length = data.length;
54        } else {
55            fatalAlert(AlertProtocol.DECODE_ERROR, "DECODE ERROR: incorrect Finished");
56        }
57    }
58
59    @Override
60    public void send(HandshakeIODataStream out) {
61        out.write(data);
62    }
63
64    /**
65     * Returns message type
66     * @return
67     */
68    @Override
69    public int getType() {
70        return Handshake.FINISHED;
71    }
72
73    /**
74     * Returns verify data
75     * @return
76     */
77    public byte[] getData() {
78        return data;
79    }
80}
81