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

package com.nimbusds.jose.jwk.gen;

import com.nimbusds.jose.jwk.JWK;
import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.util.Base64URL;
import java.security.SecureRandom;
import com.nimbusds.jose.jwk.OctetSequenceKey;

public class OctetSequenceKeyGenerator extends JWKGenerator<OctetSequenceKey>
{
    public static final int MIN_KEY_SIZE_BITS = 112;
    private final int size;
    
    public OctetSequenceKeyGenerator(final int size) {
        if (size < 112) {
            throw new IllegalArgumentException("The key size must be at least 112 bits");
        }
        if (size % 8 != 0) {
            throw new IllegalArgumentException("The key size in bits must be divisible by 8");
        }
        this.size = size;
    }
    
    @Override
    public OctetSequenceKey generate() throws JOSEException {
        final byte[] keyMaterial = new byte[this.size / 8];
        if (this.secureRandom != null) {
            this.secureRandom.nextBytes(keyMaterial);
        }
        else {
            new SecureRandom().nextBytes(keyMaterial);
        }
        final OctetSequenceKey.Builder builder = new OctetSequenceKey.Builder(Base64URL.encode(keyMaterial)).keyUse(this.use).keyOperations(this.ops).algorithm(this.alg).expirationTime(this.exp).notBeforeTime(this.nbf).issueTime(this.iat).keyStore(this.keyStore);
        if (this.tprKid) {
            builder.keyIDFromThumbprint();
        }
        else {
            builder.keyID(this.kid);
        }
        return builder.build();
    }
}
