001/*
002 * oauth2-oidc-sdk
003 *
004 * Copyright 2012-2024, Connect2id Ltd and contributors.
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
007 * this file except in compliance with the License. You may obtain a copy of the
008 * License at
009 *
010 *    http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software distributed
013 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
014 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
015 * specific language governing permissions and limitations under the License.
016 */
017
018package com.nimbusds.openid.connect.sdk.nativesso;
019
020import com.nimbusds.oauth2.sdk.id.Identifier;
021import com.nimbusds.oauth2.sdk.util.StringUtils;
022import net.jcip.annotations.Immutable;
023
024
025/**
026 * Device secret.
027 *
028 * <p>Related specifications:
029 *
030 * <ul>
031 *     <li>OpenID Connect Native SSO for Mobile Apps 1.0
032 * </ul>
033 */
034@Immutable
035public final class DeviceSecret extends Identifier {
036
037
038        private static final long serialVersionUID = 8861470156664697719L;
039
040
041        /**
042         * Creates a new device secret with the specified value.
043         *
044         * @param value The device secret value. Must not be {@code null} or
045         *              empty string.
046         */
047        public DeviceSecret(final String value) {
048                super(value);
049        }
050
051
052        @Override
053        public boolean equals(final Object object) {
054
055                return object instanceof DeviceSecret &&
056                        this.toString().equals(object.toString());
057        }
058
059
060        /**
061         * Parses a device secret from the specified string.
062         *
063         * @param s The string to parse, {@code null} or empty if no nonce is
064         *          specified.
065         *
066         * @return The device string, {@code null} if the parsed string was
067         *         {@code null} or empty.
068         */
069        public static DeviceSecret parse(final String s) {
070
071                if (StringUtils.isBlank(s))
072                        return null;
073
074                return new DeviceSecret(s);
075        }
076}