All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.azure.storage.core.EncryptionAgent Maven / Gradle / Ivy

/**
 * Copyright Microsoft Corporation
 * 
 * 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 com.microsoft.azure.storage.core;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;

/**
 * RESERVED FOR INTERNAL USE. Represents the encryption agent stored on the service. It consists of the encryption
 * protocol version and encryption algorithm used.
 */
public class EncryptionAgent {

    /**
     * The algorithm used for encryption.
     */
    public EncryptionAlgorithm encryptionAlgorithm;

    /**
     * The protocol version used for encryption.
     */
    public String protocol;

    /**
     * Initializes a new instance of the {@link EncryptionAgent} class.
     */
    public EncryptionAgent() {}
    
    /**
     * Initializes a new instance of the {@link EncryptionAgent} class using the specified protocol version and the
     * algorithm.
     * 
     * @param protocol
     *            The encryption protocol version.
     * @param algorithm
     *            The encryption algorithm.
     */
    public EncryptionAgent(String protocol, EncryptionAlgorithm algorithm) {
        this.protocol = protocol;
        this.encryptionAlgorithm = algorithm;
    }

    /**
     * Gets the algorithm used for encryption.
     * 
     * @return The algorithm used for encryption.
     */
    public EncryptionAlgorithm getEncryptionAlgorithm() {
        return encryptionAlgorithm;
    }

    /**
     * Gets the protocol version used for encryption.
     * 
     * @return The protocol version used for encryption.
     */
    public String getProtocol() {
        return protocol;
    }

    /**
     * Sets the algorithm used for encryption.
     * 
     * @param encryptionAlgorithm
     *            The algorithm used for encryption.
     */
    public void setEncryptionAlgorithm(EncryptionAlgorithm encryptionAlgorithm) {
        this.encryptionAlgorithm = encryptionAlgorithm;
    }

    /**
     * Sets the protocol version used for encryption.
     * 
     * @param protocol
     *            The protocol version used for encryption.
     */
    public void setProtocol(String protocol) {
        this.protocol = protocol;
    }
    
    public void serialize(JsonGenerator generator) throws IOException {
        
        // write protocol
        generator.writeStringField("Protocol", this.getProtocol());
        
        // write encryption algorithm
        generator.writeStringField("EncryptionAlgorithm", this.getEncryptionAlgorithm().toString());
    }
    
    public static EncryptionAgent deserialize(JsonParser parser) throws JsonParseException, IOException {
        JsonUtilities.assertIsStartObjectJsonToken(parser);

        parser.nextToken();
        
        EncryptionAgent agent = new EncryptionAgent();
        while (parser.getCurrentToken() != JsonToken.END_OBJECT) {
            String name = parser.getCurrentName();
            parser.nextToken();
            
            if (name.equals("Protocol")) {
                agent.setProtocol(parser.getValueAsString());
            } 
            else if (name.equals("EncryptionAlgorithm")) {
                agent.setEncryptionAlgorithm(EncryptionAlgorithm.valueOf(parser.getValueAsString()));
            }
            parser.nextToken();
        }
        
        JsonUtilities.assertIsEndObjectJsonToken(parser);
        
        return agent;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy