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

de.gematik.bbriccs.konnektor.requests.options.SignDocumentOptions Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2024 gematik GmbH
 *
 * 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 de.gematik.bbriccs.konnektor.requests.options;

import de.gematik.bbriccs.crypto.CryptoSystem;
import lombok.Builder;
import lombok.Getter;
import lombok.val;

@Getter
@Builder
public class SignDocumentOptions {

  private String mimeType;
  private String tvMode;
  private boolean includeEContent;
  private SignatureType signatureType;
  private SigningCryptType cryptoType;

  public static SignDocumentOptions getDefaultOptions() {
    return getDefaultOptions(SigningCryptType.RSA_ECC);
  }

  public static SignDocumentOptions getDefaultOptions(SigningCryptType crypto) {
    // these are coming from erp-api
    // https://build.top.local/source/git/spezifikation/erp/api-erp/-/blob/master/docs/erp_bereitstellen.adoc
    return new SignDocumentOptionsBuilder()
        .includeEContent(true)
        .mimeType("text/plain; charset=utf-8")
        .tvMode("NONE")
        .signatureType(SignatureType.RFC_5652)
        .cryptoType(crypto)
        .build();
  }

  public static SignDocumentOptions withAlgorithm(CryptoSystem cryptoSystem) {
    val cryptType =
        switch (cryptoSystem) {
          case RSA_2048, RSA_PSS_2048 -> SigningCryptType.RSA;
          case ECC_256 -> SigningCryptType.ECC;
        };
    return getDefaultOptions(cryptType);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy