1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.net.ipsec.ike.crypto;
18 
19 /**
20  * IkeCrypto is an abstract class that represents common information for all negotiated
21  * cryptographic algorithms that are used to build IKE SA and protect IKE message.
22  */
23 abstract class IkeCrypto {
24     private final int mAlgorithmId;
25     private final int mKeyLength;
26     private final String mAlgorithmName;
27 
IkeCrypto(int algorithmId, int keyLength, String algorithmName)28     protected IkeCrypto(int algorithmId, int keyLength, String algorithmName) {
29         mAlgorithmId = algorithmId;
30         mKeyLength = keyLength;
31         mAlgorithmName = algorithmName;
32     }
33 
getAlgorithmId()34     protected int getAlgorithmId() {
35         return mAlgorithmId;
36     }
37 
getAlgorithmName()38     protected String getAlgorithmName() {
39         return mAlgorithmName;
40     }
41 
42     /**
43      * Gets key length of this algorithm (in bytes).
44      *
45      * @return the key length (in bytes).
46      */
getKeyLength()47     public int getKeyLength() {
48         return mKeyLength;
49     }
50 
51     /**
52      * Returns algorithm type as a String.
53      *
54      * @return the algorithm type as a String.
55      */
getTypeString()56     public abstract String getTypeString();
57 }
58