Skip to content

Commit

Permalink
Update to circle ci 2. Updated to work with elm-verify-example
Browse files Browse the repository at this point in the history
  • Loading branch information
ktonon committed Dec 18, 2018
1 parent 9d0778c commit e7dbe49
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 46 deletions.
82 changes: 82 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# This configuration was automatically generated from a CircleCI 1.0 config.
# It should include any build commands you had along with commands that CircleCI
# inferred from your project structure. We strongly recommend you read all the
# comments in this file to understand the structure of CircleCI 2.0, as the idiom
# for configuration has changed substantially in 2.0 to allow arbitrary jobs rather
# than the prescribed lifecycle of 1.0. In general, we recommend using this generated
# configuration as a reference rather than using it in production, though in most
# cases it should duplicate the execution of your original 1.0 config.
version: 2
jobs:
build:
working_directory: ~/ktonon/elm-word
parallelism: 1
shell: /bin/bash --login
# CircleCI 2.0 does not support environment variables that refer to each other the same way as 1.0 did.
# If any of these refer to each other, rewrite them so that they don't or see https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables-to-set-other-environment-variables .
environment:
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
# In CircleCI 1.0 we used a pre-configured image with a large number of languages and other packages.
# In CircleCI 2.0 you can now specify your own image, or use one of our pre-configured images.
# The following configuration line tells CircleCI to use the specified docker image as the runtime environment for you job.
# We have selected a pre-built image that mirrors the build environment we use on
# the 1.0 platform, but we recommend you choose an image more tailored to the needs
# of each job. For more information on choosing an image (or alternatively using a
# VM instead of a container) see https://circleci.com/docs/2.0/executor-types/
# To see the list of pre-built images that CircleCI provides for most common languages see
# https://circleci.com/docs/2.0/circleci-images/
docker:
- image: hotbelgo/docker-elm
steps:
# Machine Setup
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out.
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
# This is based on your 1.0 configuration file or project settings
- run:
working_directory: ~/ktonon/elm-word
command: yarn global add elm-verify-examples [email protected]
# Dependencies
# This would typically go in either a build or a build-and-test job when using workflows
# Restore the dependency cache
- restore_cache:
keys:
# This branch if available
- v1-dep-{{ .Branch }}-
# Default branch if not
- v1-dep-master-
# Any branch if there are none on the default branch - this should be unnecessary if you have your default branch configured correctly
- v1-dep-
# Save dependency cache
- save_cache:
key: v1-dep-{{ .Branch }}-{{ epoch }}
paths:
# This is a broad list of cache paths to include many possible development environments
# You can probably delete some of these entries
- vendor/bundle
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.bundle
- ~/.go_workspace
- ~/.gradle
- ~/.cache/bower
# Test
# This would typically be a build job when using workflows, possibly combined with build
- run: elm make
- run: ./run-short-tests.sh
# Teardown
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# Save test results
- store_test_results:
path: /tmp/circleci-test-results
# Save artifacts
- store_artifacts:
path: /tmp/circleci-artifacts
- store_artifacts:
path: /tmp/circleci-test-results
File renamed without changes.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# elm-crypto

[![live-demo](https://img.shields.io/badge/live-demo-blue.svg)](http://elm-crypto.betweenconcepts.com)
[![elm-package](https://img.shields.io/badge/elm-1.1.1-blue.svg)](http://package.elm-lang.org/packages/ktonon/elm-crypto/latest)
[![elm-package](https://img.shields.io/badge/elm-1.1.2-blue.svg)](http://package.elm-lang.org/packages/ktonon/elm-crypto/latest)
[![CircleCI](https://img.shields.io/circleci/project/github/ktonon/elm-crypto.svg)](https://circleci.com/gh/ktonon/elm-crypto)

Cryptography with HMAC and SHA.
Expand Down
10 changes: 0 additions & 10 deletions circle.yml

This file was deleted.

2 changes: 1 addition & 1 deletion run-short-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

set -e

elm-doc-test
elm-verify-examples
elm-test tests/Doc/**/*.elm tests/HMACTests.elm tests/SHA2ShortTests.elm
38 changes: 18 additions & 20 deletions src/Crypto/SHA/Chunk.elm
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
module Crypto.SHA.Chunk exposing
( Chunk
, next
, sizeInBits
, sizeInBytes
, sizeInWords
)

{-|
import Crypto.SHA.Alg exposing (Alg(..))
-}
module Crypto.SHA.Chunk
exposing
( Chunk
, next
, sizeInBits
, sizeInBytes
, sizeInWords
)

import Crypto.SHA.Alg as Alg exposing (Alg(..))
import Word exposing (Word)
Expand All @@ -29,17 +24,18 @@ next alg words =
chunk =
List.take n words
in
( if List.isEmpty chunk then
Nothing

else
Just chunk
, List.drop n words
)
( if List.isEmpty chunk then
Nothing
else
Just chunk
, List.drop n words
)


{-|
import Crypto.SHA.Alg exposing (Alg(..))
sizeInBits SHA224
--> 512
Expand Down Expand Up @@ -76,6 +72,8 @@ sizeInBytes alg =

{-|
import Crypto.SHA.Alg exposing (Alg(..))
sizeInWords SHA256
--> 16
Expand Down
34 changes: 20 additions & 14 deletions src/Crypto/SHA/Preprocess.elm
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
module Crypto.SHA.Preprocess exposing (calculateK, preprocess)

{-| SHA-2 preprocess.
import Word.Bytes exposing (fromUTF8)
import Crypto.SHA.Alg exposing (Alg(..))
-}

import Crypto.SHA.Alg exposing (Alg(..))
Expand All @@ -14,6 +10,9 @@ import Word.Bytes as Bytes

{-| Append 1 + K zeros + size of message.
import Word.Bytes exposing (fromUTF8)
import Crypto.SHA.Alg exposing (Alg(..))
preprocess SHA256 []
--> 0x80 :: (List.repeat 63 0x00)
Expand All @@ -22,16 +21,21 @@ import Word.Bytes as Bytes
let
x = preprocess SHA256 (fromUTF8 "I ❤ cheese")
y = preprocess SHA512 (fromUTF8 "I ❤ cheese")
in
( x |> List.length
, y |> List.length
, x |> List.reverse |> List.head
, y |> List.reverse |> List.head
)
--> ( 64
--> , 128
--> , Just <| (9 + 3) * 8
--> )
let
y = preprocess SHA512 (fromUTF8 "I ❤ cheese")
in
( y |> List.length
, y |> List.reverse |> List.head
)
--> ( 128
--> , Just <| (9 + 3) * 8
--> )
Expand All @@ -52,6 +56,8 @@ postfix alg messageSize =

{-| Calculate the amount of 0 bit padding.
import Crypto.SHA.Alg exposing (Alg(..))
calculateK SHA256 0
--> (512 - 64 - 1)
Expand Down Expand Up @@ -80,12 +86,12 @@ calculateK alg l =
c =
Chunk.sizeInBits alg
in
modBy c
(c
- 1
- (8 * messageSizeBytes alg)
- (modBy c l)
)
modBy c
(c
- 1
- (8 * messageSizeBytes alg)
- (modBy c l)
)


messageSizeBytes : Alg -> Int
Expand Down
File renamed without changes.

0 comments on commit e7dbe49

Please sign in to comment.