// 
// Decompiled by Procyon v0.6.0
// 

package com.google.crypto.tink.signature.internal;

import com.google.protobuf.ByteString;
import java.math.BigInteger;
import com.google.crypto.tink.proto.EcdsaSignatureEncoding;
import com.google.crypto.tink.subtle.EllipticCurves;
import com.google.crypto.tink.proto.EllipticCurveType;
import java.security.GeneralSecurityException;
import com.google.crypto.tink.subtle.Enums;
import com.google.crypto.tink.proto.HashType;

public final class SigUtil
{
    static final String INVALID_PARAMS = "Invalid ECDSA parameters";
    
    public static Enums.HashType toHashType(final HashType hash) throws GeneralSecurityException {
        switch (hash) {
            case SHA256: {
                return Enums.HashType.SHA256;
            }
            case SHA384: {
                return Enums.HashType.SHA384;
            }
            case SHA512: {
                return Enums.HashType.SHA512;
            }
            default: {
                throw new GeneralSecurityException("unsupported hash type: " + hash.name());
            }
        }
    }
    
    public static EllipticCurves.CurveType toCurveType(final EllipticCurveType type) throws GeneralSecurityException {
        switch (type) {
            case NIST_P256: {
                return EllipticCurves.CurveType.NIST_P256;
            }
            case NIST_P384: {
                return EllipticCurves.CurveType.NIST_P384;
            }
            case NIST_P521: {
                return EllipticCurves.CurveType.NIST_P521;
            }
            default: {
                throw new GeneralSecurityException("unknown curve type: " + type.name());
            }
        }
    }
    
    public static EllipticCurves.EcdsaEncoding toEcdsaEncoding(final EcdsaSignatureEncoding encoding) throws GeneralSecurityException {
        switch (encoding) {
            case IEEE_P1363: {
                return EllipticCurves.EcdsaEncoding.IEEE_P1363;
            }
            case DER: {
                return EllipticCurves.EcdsaEncoding.DER;
            }
            default: {
                throw new GeneralSecurityException("unknown ECDSA encoding: " + encoding.name());
            }
        }
    }
    
    public static ByteString toUnsignedIntByteString(final BigInteger i) {
        final byte[] twosComplement = i.toByteArray();
        if (twosComplement[0] == 0) {
            return ByteString.copyFrom(twosComplement, 1, twosComplement.length - 1);
        }
        return ByteString.copyFrom(twosComplement);
    }
    
    private SigUtil() {
    }
}
