sig
  type key
  type result = { message : Cstruct.t; tag : Cstruct.t; }
  val of_secret : Cstruct.t -> Nocrypto.Cipher_block.S.GCM.key
  val key_sizes : int array
  val block_size : int
  val encrypt :
    key:Nocrypto.Cipher_block.S.GCM.key ->
    iv:Cstruct.t ->
    ?adata:Cstruct.t -> Cstruct.t -> Nocrypto.Cipher_block.S.GCM.result
  val decrypt :
    key:Nocrypto.Cipher_block.S.GCM.key ->
    iv:Cstruct.t ->
    ?adata:Cstruct.t -> Cstruct.t -> Nocrypto.Cipher_block.S.GCM.result
end