// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.examples.rot13;

/// Example service that performs rot13 encryption.
@discoverable
protocol Rot13 {
    /// Applies rot13 encryption to the given string
    /// Args:
    ///   value - the string to encrypt.
    /// Returns:
    ///   response - is the encrypted string.
    Encrypt(struct { value string:128; }) -> (struct { response string:128; });

    /// Calculates the unsigned 32 bit checksum of the string.
    Checksum(struct { value string:128; }) -> (struct { response uint32; });
};
